📅  最后修改于: 2020-11-02 04:49:16             🧑  作者: Mango
Scala的异常与Java之类的许多其他语言中的异常一样工作。代替以常规方式返回值,方法可以通过引发异常来终止。但是,Scala实际上没有检查过的异常。
当您要处理异常时,可以像在Java中一样使用try {…} catch {…}块,只是catch块使用匹配来识别和处理异常。
引发异常看起来与Java中相同。创建一个异常对象,然后使用throw关键字将其抛出,如下所示。
throw new IllegalArgumentException
Scala允许您尝试/捕获单个块中的任何异常,然后使用case块对其执行模式匹配。请尝试以下示例程序来处理异常。
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中。以下命令用于编译和执行该程序。
\>scalac Demo.scala
\>scala Demo
Missing file exception
try-catch表达式的行为与其他语言相同,但有例外。主体被执行,并且如果引发异常,则依次尝试每个catch子句。
如果要使某些代码无论表达式如何终止执行,都可以用finally子句包装表达式。请尝试以下程序。
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中。以下命令用于编译和执行该程序。
\>scalac Demo.scala
\>scala Demo
Missing file exception
Exiting finally...