Java处理异常的方式

  1. java语言按照try—catch-catch…-finally的方式来处理异常
  2. 不管有没有异常捕获,都会执行finally,因此通常可以在finally代码块中释放资源3)可以有多个catch,分别捕获对应的异常,这时需要把范围小的异常类写在前面,
  3. 把范围大的异常类写在后面,否则编译错误。会提示”Exception ‘java.lang.xxxxxx’has already been caught”

在Java中我们不可以把大的异常写在前面,小的异常写在后面,因为大的异常写在前面他会捕获所有的异常,后面的就捕获不到了,但是在Scala中可以不用在乎异常的顺序

Scala异常处理案例

1
2
3
4
5
6
7
8
9
10
11
12
13
object ExceptionProcess {
def main(args: Array[String]): Unit = {
var num01 = 0
var num02 = 10
try {
println(num02 / num01)
} catch {
case exception: ArithmeticException => println("被除数不能为0")
} finally {
println("不管有没有异常都会执行")
}
}
}

Scala异常处理小结

  • 我们将可以代码封装在try快中。在特try快之后使用了一个catch处理程序来捕获异常。如果发生任何异常,catch程序将处理它,程序件不会异常终止
  • Scala的异常工作机制和Java的一样,但是Scala没有“checked 编译器”,异常,即Scala没有编译这个概念,异常都是在运行的时候捕获处理
  • 用throw关键字,抛出一个异常对象,所有异常都是throwable的子类型,throw表达式是有类型的,就是nothing,因为nothing是所有类型的子类型,所以throw表达式可以用在需要类型的地方
  • 在Scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch的代码里,是
    一系列case子句来匹配异常。当匹配上后=→>有多条语句可以换行写,类似java的 switch case x:代码块..
  • 异常捕捉的机制与其他语言中一样,如果有异常发生,catch子句是按次序捕捉的
    因此,在catch子句中,越具体的异常越要靠前,越普遍的异常越靠后,如果把越普遍的异常写在前,把具体的异常写在后,在scala中也不会报错,但这样是非常不好的编程风格。
  • finally子句不管是正常结束还是异常结束都会执行,一般用于对象的清理工作这点和Java一样
  • Scala提供了throws关键字来声明异常。可以使用方法定义声明异常。它向调用者函数提供了此方法可能引发此异常的信息。它有助于调电函数处理并将该代码包含在try-catch块中,以避免程序异常终止。在scala中,可以使用throws注释来声明异常