Scala異常處理
Scala的異常處理類似許多其他語言(如Java)。它不是以正常方式返回值,方法可以通過拋出異常來終止。 但是,Scala實際上並沒有檢查異常。
當您想要處理異常時,要像Java一樣使用try {...} catch {...}
塊,除了catch
塊使用匹配來識別和處理異常。
引發異常
拋出異常看起來與Java中的異常一樣。創建一個異常對象,然後使用throw
關鍵字將其拋出如下。
throw new IllegalArgumentException
捕獲異常
Scala允許在單個塊中try/catch
任何異常,然後使用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中,使用以下命令編譯和執行此程序。
D:\>scalac Demo.scala
D:\>scala Demo
Missing file exception
try-catch
表達式的行爲與其他具有異常的語言相同。它在主體中執行,如果它拋出一個異常,則會依次嘗試每個catch
子句。
finally子句
如果希望引發一些代碼執行,無論表達式如何終止,都會執行在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中,使用以下命令編譯和執行此程序。
D:\>scalac Demo.scala
D:\>scala Demo
Missing file exception
Exiting finally...