43-异常类
4.11.1 异常类
与Java类似,Kotlin的所有异常类都是Throwable类的子类,每个异常类成员都包含异常信息、堆栈信息和可选的异常原因。
如果需要主动抛出异常对象,而不进行任何处理,可以使用throw表达式。代码如下。
throw MyException("This is error") // MyException继承自Throwable
如果直接在函数内部抛出异常,则函数将在抛出异常的地方结束;如果不希望函数结束,则必须捕获被抛出的异常并对它进行处理。和Java类似,要捕获异常, 可以使用try表达式。代码如下。
try {
//某些逻辑处理
}
catch (e: SomeException) {
//异常处理
}
finally {
//可选finally代码块
}
在上面的表达式中,有以下几点需要注意。
- try语句块:此语句块表示要尝试运行的代码,try语句块中代码受异常监控,当代码发生异常时会抛出异常对象。
- catch语句块:此语句块会捕获try代码块中发生的异常并进行异常处理,catch语句带一个Throwable类型的参数,表示可捕获异常类型。catch语句可以有多个,用来匹配多个异常中的一个,一旦成功就不再尝试其他匹配。
- finally语句块:紧跟catch语句块并且总是在方法返回前执行,而不管try语句块是否发生异常。提供finally语句块的目的是给程序一个补救的机会。