簡介
scala的方法可以通過拋出異常的方法的方式來終止相關代碼的運行,不必通過返回值。
拋出異常
Scala 拋出異常的方法和 Java一樣,使用 throw 方法,例如,拋出一個新的參數異常:throw new IllegalArgumentException
捕獲異常
異常捕捉的機制與其他語言中一樣,如果有異常發生,catch字句是按次序捕捉的。因此,在catch字句中,越具體的異常越要靠前,
越普遍的異常越靠後。如果拋出的異常不在catch字句中,該異常則無法處理,會被升級到調用者處。
捕捉異常的catch子句,語法與其他語言中不太一樣。在Scala裏,借用了模式匹配的思想來做異常的匹配。因此,在catch的代碼裏,
是一系列case字句,如下例所示:
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
object Test {
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")
}
}
}
}
執行以上代碼,輸出結果爲:
$ scalac Test.scala
$ scala Test
Missing file exception
finally語句
finally 語句用於執行不管是正常處理還是有異常發生時都需要執行的步驟,實例如下:
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
object Test {
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...")
}
}
}
執行以上代碼,輸出結果爲:
$ scalac Test.scala
$ scala Test
Missing file exception
Exiting finally...
忠於技術,熱愛分享。歡迎關注公衆號:java大數據編程,瞭解更多技術內容。