Scala - Gestione delle eccezioni
Le eccezioni di Scala funzionano come le eccezioni in molti altri linguaggi come Java. Invece di restituire un valore nel modo normale, un metodo può terminare generando un'eccezione. Tuttavia, Scala in realtà non ha controllato le eccezioni.
Quando si desidera gestire le eccezioni, si utilizza un blocco try {...} catch {...} come si farebbe in Java, tranne per il fatto che il blocco catch utilizza la corrispondenza per identificare e gestire le eccezioni.
Lanciare eccezioni
La generazione di un'eccezione ha lo stesso aspetto di Java. Crei un oggetto eccezione e poi lo lanci con ilthrow parola chiave come segue.
throw new IllegalArgumentException
Catturare le eccezioni
Scala te lo permette try/catch qualsiasi eccezione in un singolo blocco e quindi eseguire la corrispondenza del modello su di essa utilizzando caseblocchi. Prova il seguente programma di esempio per gestire l'eccezione.
Esempio
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")
}
}
}
}
Salvare il programma sopra in formato Demo.scala. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.
Comando
\>scalac Demo.scala
\>scala Demo
Produzione
Missing file exception
Il comportamento di questo try-catchl'espressione è la stessa di altre lingue con eccezioni. Il corpo viene eseguito e, se genera un'eccezione, ciascunocatch clausola viene provata a sua volta.
L'ultima clausola
Puoi racchiudere un'espressione con un finallyse si desidera che venga eseguito del codice indipendentemente da come termina l'espressione. Prova il seguente programma.
Esempio
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...")
}
}
}
Salvare il programma sopra in formato Demo.scala. I seguenti comandi vengono utilizzati per compilare ed eseguire questo programma.
Comando
\>scalac Demo.scala
\>scala Demo
Produzione
Missing file exception
Exiting finally...