Scala 异常处理

简介: Scala 异常处理

Scala 的异常处理和其它语言比如 Java 类似。

Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。

抛出异常
Scala 抛出异常的方法和 Java一样,使用 throw 方法,例如,抛出一个新的参数异常:

throw new IllegalArgumentException
捕获异常
异常捕捉的机制与其他语言中一样,如果有异常发生,catch 字句是按次序捕捉的。因此,在 catch 字句中,越具体的异常越要靠前,越普遍的异常越靠后。 如果抛出的异常不在 catch 字句中,该异常则无法处理,会被升级到调用者处。

捕捉异常的 catch 子句,语法与其他语言中不太一样。在 Scala 里,借用了模式匹配的思想来做异常的匹配,因此,在 catch 的代码里,是一系列 case 字句,如下例所示:

实例
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")
}
}
}
}
执行以上代码,输出结果为:

$ scalac Test.scala
$ scala Test
Missing file exception
catch字句里的内容跟match里的case是完全一样的。由于异常捕捉是按次序,如果最普遍的异常,Throwable,写在最前面,则在它后面的case都捕捉不到,因此需要将它写在最后面。

finally 语句
finally 语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤,实例如下:

实例
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...")
}
}
}
执行以上代码,输出结果为:

$ scalac Test.scala
$ scala Test
Missing file exception
Exiting finally...

目录
相关文章
|
7天前
|
Java Scala
Scala 方法与函数
Scala 方法与函数
13 1
|
7天前
|
Scala
Scala IF...ELSE 语句
Scala IF...ELSE 语句
16 0
|
7月前
|
Scala
Scala中的异常处理和模式匹配
Scala中的异常处理和模式匹配
46 1
|
7月前
|
Scala
Scala控制流
Scala控制流
32 2
|
7月前
|
Scala
Scala函数和方法
Scala函数和方法
38 1
|
Scala
163 Scala 类
163 Scala 类
37 0
|
机器学习/深度学习 分布式计算 Java
Scala方法和函数
Scala方法和函数
101 0
|
Java Scala
scala中的异常处理
执行程序,可以看到scala抛出了异常,而且没有打印出来"你好"。说明程序出现错误后就终止了。那怎么解决该问题呢?
112 0
|
Java 编译器 Scala
【Scala】(二)Scala 基本语法及操作、程序控制结构
【Scala】(二)Scala 基本语法及操作、程序控制结构
337 0
【Scala】(二)Scala 基本语法及操作、程序控制结构
|
编译器 Scala Python
Scala中的方法与函数
封装是计算机编程语言中最基本但也十分经典的思想(更严谨地说封装是面向对象设计中的一种思想),例如将一段频繁用到的逻辑写成一个函数的过程,其背后蕴含的其实就是封装的思想。与众多编程语言类似,Scala中也提供了方法和函数的功能,但在具体使用上又有很多特别之处,甚至一定程度上可以彰显Scala的设计理念。
149 0
Scala中的方法与函数