val half =
if (n % 2 == 0)
n/2
else
throw new RuntimeException("n must be even")
當 n 為偶數時,n 初始化為 n 的一半,而如果 n 為奇數,將在初始化 half 之前就拋出異常,正因為如此,可以把 throw 的返回值的類型為任意類型。技術上來說,拋出異常的類型為 Nothing。對于說明的例子來說整個 if 表達式的類型為可以計算出值的那個分支的類型,如果 n 為 Int,那么 if 表示式的類型也是 Int 類型,而不需要考慮 throw 表達式的類型。
捕獲異常
Scala 捕獲異常的方法和后面介紹的“模式匹配”的使用方法是一致的。比如:
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
try {
val f = new FileReader("input.txt")
} catch {
case ex: FileNotFoundException => //handle missing file
case ex: IOException => //handle other I/O error
}
更多建議: