Try
ist Datentyp ähnlich den Typen Either
und
Option
. Try
ist die Oberklasse für zwei Typen in der
Standarddistribution welche einmal eine erfolgreiche Ausführung eines Programmteiles und einmal einen
aufgetretenen Fehlerfall (engl. Exception) repräsentieren.
Sehen wir uns nun ein Beispielprogramm an, wie wir mit Try
fehleranfällige Programmteile
mit Scala behandeln können.
import scala.util.Try import scala.util.Success import scala.util.Failure object TryDemo { def compute(x: Int, y: Int): Try[Int] = Try(x / y) def main(args: Array[String]): Unit = { val result1 = compute(12,4) out(result1) val result2 = compute(13,0) out(result2) } def out(value: Try[Int]): Unit = { value match { case Success(_) => println("Success: "+value) case Failure(_) => println("Failure") } } }
Die Ausführung des Programms führt zu folgender Ausgabe auf der Systemausgabe:
Success: Success(3) Failure
Die Funktion compute
stellt die Applikationslogik dar, wo eine Integer-Division vorgenommen
wird. Da eine Division durch 0 nicht definiert ist und zu einem Fehler führt, ist diese Funktion Fehleranfällig
und muss dementsprechend abgesichert werden.
Um diese mögliche Ausnahme zu behandeln verpacken wir das Ergebnis in einen Try
Datentyp,
welcher je nach Ausführungsergebnis Success
oder vom Typ Failure
sein kann.
Unsere main
-Methode ruft die compute
-Funktion zweimal auf. Einmal mit
gütigen Argumenten und einmal mit einem Argument 0 als Divisor. Anschließend übergeben wir
das Ergebnis von compute
an die Methode out
, welche das Ergebnis auswertet und eine entsprechende Ausgabe
auf der Systemausgabe macht.
Daniel Westheide
The Neophyte's Guide to Scala Part 6: Error Handling With Try
http://danielwestheide.com/blog/2012/12/26/the-neophytes-guide-to-scala-part-6-error-handling-with-try.html
API Dokumentation:
Try - Class
Try - Object
Success - Class
Failure - Class