小白教程
所有教程
关于
Search
172.70.178.170
172.70.178.170
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Scala 异常处理”的源代码
本页内容
上一节:
Scala_正则表达式
下一节:
Scala_提取器(Extractor)
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:Scala 异常处理}}[[Category:Scala 教程|21]] = Scala 异常处理 = Scala 的异常处理和其它语言比如 Java 类似。 Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。 == 抛出异常 == Scala 抛出异常的方法和 Java一样,使用 throw 方法,例如,抛出一个新的参数异常: <pre>throw new IllegalArgumentException</pre> == 捕获异常 == 异常捕捉的机制与其他语言中一样,如果有异常发生,catch 字句是按次序捕捉的。因此,在 catch 字句中,越具体的异常越要靠前,越普遍的异常越靠后。 如果抛出的异常不在 catch 字句中,该异常则无法处理,会被升级到调用者处。 捕捉异常的 catch 子句,语法与其他语言中不太一样。在 Scala 里,借用了模式匹配的思想来做异常的匹配,因此,在 catch 的代码里,是一系列 case 字句,如下例所示: <sample title="" desc="" lang="scala" hererun="1"> import java.io.FileReader import java.io.FileNotFoundException import java.io.IOException object 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") } } } } </sample> 执行以上代码,输出结果为: <pre> $ scalac Test.scala $ scala Test Missing file exception </pre> catch字句里的内容跟match里的case是完全一样的。由于异常捕捉是按次序,如果最普遍的异常,Throwable,写在最前面,则在它后面的case都捕捉不到,因此需要将它写在最后面。 == finally 语句 == finally 语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤,实例如下: <sample title="" desc="" lang="scala" hererun="1"> import java.io.FileReader import java.io.FileNotFoundException import java.io.IOException object 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...") } } } </sample> 执行以上代码,输出结果为: <pre> $ scalac Test.scala $ scala Test Missing file exception Exiting finally... </pre>
返回至“
Scala 异常处理
”。
上一节:
Scala_正则表达式
下一节:
Scala_提取器(Extractor)