异常处理( Exception Handling)
优质
小牛编辑
131浏览
2023-12-01
Scala的异常就像许多其他语言(如Java)中的异常一样。 方法可以通过抛出异常来终止,而不是以正常方式返回值。 但是,Scala实际上并没有检查异常。
当你想要处理异常时,你可以像在Java中一样使用try {...} catch {...}块,除了catch块使用匹配来识别和处理异常。
抛出异常
抛出异常与Java中的异常相同。 您创建一个异常对象,然后使用throw关键字抛出它,如下所示。
throw new IllegalArgumentException
捕捉异常
Scala允许您在单个块中try/catch任何异常,然后使用case块对其执行模式匹配。 尝试以下示例程序来处理异常。
例子 (Example)
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")
}
}
}
}
将上述程序保存在Demo.scala 。 以下命令用于编译和执行此程序。
Command
\>scalac Demo.scala
\>scala Demo
输出 (Output)
Missing file exception
此try-catch表达式的行为与其他具有异常的语言相同。 正文被执行,如果它抛出异常,则依次尝试每个catch子句。
最后的条款
如果要使某些代码执行而无论表达式如何终止,您可以使用finally子句包装表达式。 请尝试以下程序。
例子 (Example)
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...")
}
}
}
将上述程序保存在Demo.scala 。 以下命令用于编译和执行此程序。
Command
\>scalac Demo.scala
\>scala Demo
输出 (Output)
Missing file exception
Exiting finally...