当前位置:K88软件开发文章中心编程语言JavaJava01 → 文章内容

Scala 异常处理

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 13:27:25

Scala 异常处理Scala 的异常处理和其它语言比如 Java 类似。Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。抛出异常Scala 抛出异常的方法和 Java一样,使用 throw 方法,例如,抛出一个新的参数异常:throw new IllegalArgumentException捕获异常异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的。因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越靠后。 如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。捕捉异常的catch子句,语法与其他语言中不太一样。在Scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch的代码里,是一系列case字句,如下例所示:import java.io.FileReaderimport java.io.FileNotFoundExceptionimport java.io.IOExceptionobject 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 TestMissing file exceptioncatch字句里的内容跟match里的case是完全一样的。由于异常捕捉是按次序,如果最普遍的异常,Throwable,写在最前面,则在它后面的case都捕捉不到,因此需要将它写在最后面。finally 语句finally 语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤,实例如下:import java.io.FileReaderimport java.io.FileNotFoundExceptionimport java.io.IOExceptionobject 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 TestMissing file exceptionExiting finally...

Scala 异常处理