0%

scala异常处理

scala异常处理

在scala中也要使用异常处理,与java类似,也是使用try…catch来进行异常处理和捕获,但是语法上有些地方是不同的,scala中只能包含一个catch,但是一个catch中可以使用case来操作匹配异常

1
2
3
4
5
6
7
8
9
10
11
12
13
try {
var a = 10 / 0
} catch {
// 采用的是模式匹配的方式
// case可以匹配异常类型进行处理
// => 后为匹配后所执行的操作
case e: ArithmeticException => println("操作出错了" + e.getMessage)
case e: Exception => {
println("出现了不知道的异常")
}
} finally {
println("不管报没报错,总得干点啥")
}

catch中case是从上到下依次匹配的,所以推荐将小异常放在上面,大异常放在下边

scala中没有编译期异常,全是运行期异常

声明一个抛出异常的方法

返回类型使用Nothing,因为Nothing是所有类型的子类

1
2
3
def test() : Nothing = {
throw new UnsupportedOperationException("非法操作")
}

可以使用@throws注解来表明该函数将会抛出的异常

1
2
3
4
@throws(classOf[ArithmeticException])
def myFun() = {
var a = 10 / 0
}