💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 异常 当碰到异常情况时,方法抛出一个异常,终止方法本身的执行,异常传递到其调用者,调用者可以处理该异常,也可以升级到他的调用者.运行系统会一直这样升级异常,直到有调用者能处理它.如果一直没有处理,则终止整个程序 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 { } } } ~~~