Scala - Ausnahmebehandlung

Die Ausnahmen von Scala funktionieren wie Ausnahmen in vielen anderen Sprachen wie Java. Anstatt einen Wert auf normale Weise zurückzugeben, kann eine Methode durch Auslösen einer Ausnahme beendet werden. Scala hat jedoch keine Ausnahmen überprüft.

Wenn Sie Ausnahmen behandeln möchten, verwenden Sie einen try {...} catch {...} -Block wie in Java, außer dass der catch-Block Matching verwendet, um die Ausnahmen zu identifizieren und zu behandeln.

Ausnahmen werfen

Das Auslösen einer Ausnahme sieht genauso aus wie in Java. Sie erstellen ein Ausnahmeobjekt und werfen es dann mit demthrow Schlüsselwort wie folgt.

throw new IllegalArgumentException

Ausnahmen fangen

Scala ermöglicht es Ihnen try/catch eine Ausnahme in einem einzelnen Block und führen Sie dann einen Mustervergleich mit ihm durch caseBlöcke. Versuchen Sie das folgende Beispielprogramm, um Ausnahmen zu behandeln.

Beispiel

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

object Demo {
   def main(args: Array[String]) {
      try {
         val f = new FileReader("input.txt")
      } catch {
         case ex: FileNotFoundException =>{
            println("Missing file exception")
         }
         
         case ex: IOException => {
            println("IO Exception")
         }
      }
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

Missing file exception

Das Verhalten davon try-catchAusdruck ist der gleiche wie in anderen Sprachen mit Ausnahmen. Der Body wird ausgeführt, und wenn er eine Ausnahme auslöst, jeweilscatch Klausel wird der Reihe nach versucht.

Die Endklausel

Sie können einen Ausdruck mit einem umschließen finallyKlausel, wenn Sie bewirken möchten, dass Code ausgeführt wird, unabhängig davon, wie der Ausdruck beendet wird. Versuchen Sie das folgende Programm.

Beispiel

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

object Demo {
   def main(args: Array[String]) {
      try {
         val f = new FileReader("input.txt")
      } catch {
         case ex: FileNotFoundException => {
            println("Missing file exception")
         }
         
         case ex: IOException => {
            println("IO Exception")
         }
      } finally {
         println("Exiting finally...")
      }
   }
}

Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.

Befehl

\>scalac Demo.scala
\>scala Demo

Ausgabe

Missing file exception
Exiting finally...