异常
当碰到异常情况时,方法抛出一个异常,终止方法本身的执行,异常传递到其调用者,调用者可以处理该异常,也可以升级到他的调用者.运行系统会一直这样升级异常,直到有调用者能处理它.如果一直没有处理,则终止整个程序
scala的异常工作机制和java一样,但是scala没有”checked”异常,你不需要声明说函数或者方法可能会抛出某种异常.受检异常在编译器被检查,java必须声明方法所会抛出异常类型
抛出异常:用throw关键字,抛出一个异常对象.所有异常都是Throwable的子类型.throw表达式是有类型的,就是Nothing,因为Nothing是所有类型的子类型,所以throw表达式可以用在需要类型的地方
捕捉异常:在scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch的代码里,是一系列case字句
异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的.因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越要靠后.
如果抛出的异常不在catch字句中,该异常则无法处理,会升级到调用者处
finally字句用于执行不管是正常处理还是有异常发生时都需要执行的步骤,一般用于对象的清理工作
object ExceptionSyllabus {
def divider(x: Int, y:Int): Float = {
if (y == 0) throw new Exception("0作为除数")
else x / y
}
def main(args: Array[String]): Unit = {
try {
println(divider(10, 3))
} catch {
case ex: Exception => println("捕获了异常: " + ex)
} finally {
}
}
}