Try, Success, Failure

Einstieg
Beispielprogrann
Links

Einstieg

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.

Beispielprogramm

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")
    }    
  }
}
itmapa.de - X2H V 0.21

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 Flagge Großbritanien
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 Flagge Großbritanien


API Dokumentation:

Try - Class Flagge Großbritanien
Try - Object Flagge Großbritanien
Success - Class Flagge Großbritanien
Failure - Class Flagge Großbritanien