Scala 异常处理
来源:互联网 发布:网站数据库放在哪里 编辑:程序博客网 时间:2024/06/05 22:51
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 exception
catch字句里的内容跟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...
0 0
- Scala 异常处理
- Scala 异常处理
- Scala 异常处理
- 2.scala控制结构、函数、异常处理
- 云星数据---Scala实战系列(精品版)】:Scala入门教程055-Scala实战源码-Scala 异常处理
- 002-Scala函数定义、流程控制、异常处理入门实战
- scala 基本语句-流程控制与函数定义、异常处理
- 关于scala 函数定义 流程控制 异常处理
- 02Scala-函数定义、流程控制、异常处理入门实战
- Scala-02函数定义、流程控制、异常处理
- 学习Scala:使用try-catch表达式处理异常
- 【Scala学习笔记】2. 函数定义、流程控制、异常处理
- Scala-01:函数定义、流程控制、异常处理
- scala函数定义、流程控制与异常处理
- Scala的函数定义、流程控制和异常处理
- Scala-02:函数定义、流程控制、异常处理入门实战
- 一步步学spark之一scala的异常处理1.7
- [0.3] scala函数定义、流程控制与异常处理
- 8.3 bzoj1103 [POI2007]大都市meg
- Java集合类----HashSet的实现原理
- 有向图中的最短路径
- Mac ProGuard Jar混淆工具及操作文档
- TCP/IP、Http、Socket的区别
- Scala 异常处理
- apt-get 失败
- 16. 3Sum Closest(重要)
- unity3d 23
- Velocity 模板引擎介绍
- eclipse for php编辑器遇namespace报语法错误?
- 产品助理day19
- 在Spring中配置jdbc为什么不能用${username}问题
- 采用ViewIndicator主题设置之后造成的listview点击事件处理