Scala - Manejo de excepciones
Las excepciones de Scala funcionan como excepciones en muchos otros lenguajes como Java. En lugar de devolver un valor de la forma normal, un método puede terminar lanzando una excepción. Sin embargo, Scala en realidad no tiene excepciones comprobadas.
Cuando desee manejar excepciones, use un bloque try {...} catch {...} como lo haría en Java, excepto que el bloque catch usa la coincidencia para identificar y manejar las excepciones.
Lanzar excepciones
Lanzar una excepción tiene el mismo aspecto que en Java. Creas un objeto de excepción y luego lo lanzas con elthrow palabra clave de la siguiente manera.
throw new IllegalArgumentException
Captura de excepciones
Scala te permite try/catch cualquier excepción en un solo bloque y luego realice la comparación de patrones con él usando casebloques. Pruebe el siguiente programa de ejemplo para manejar la excepción.
Ejemplo
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")
}
}
}
}
Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
Mando
\>scalac Demo.scala
\>scala Demo
Salida
Missing file exception
El comportamiento de este try-catchLa expresión es la misma que en otros idiomas con excepciones. El cuerpo se ejecuta, y si arroja una excepción, cadacatch la cláusula se prueba a su vez.
La cláusula finalmente
Puede envolver una expresión con un finallycláusula si desea que se ejecute algún código sin importar cómo termine la expresión. Prueba el siguiente programa.
Ejemplo
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...")
}
}
}
Guarde el programa anterior en Demo.scala. Los siguientes comandos se utilizan para compilar y ejecutar este programa.
Mando
\>scalac Demo.scala
\>scala Demo
Salida
Missing file exception
Exiting finally...