异常处理
Java的异常处理机制:简捷、轻量化的执行期间例外状况处理方式。
在方法生命中由throws语句的方法会抛出异常。
异常是一种Exception类型的对象。
RuntimeException:运行时异常,不受编译器检查,不需要声明在try/catch块中
Q:为什么编译器不管运行时异常?它们不是也会让程序死掉吗?
A:大部分运行时异常都是因为程序逻辑问题,而不是以你无法预测或防止的方法出现的执行期失败状况。
你会需要在开发与测试期发生RuntimeException,以便能够不把程序代码放进try/catch的情况下来找到一开始就不应该出现的问题。
而try/catch是用来处理真正的异常,该块要做的是恢复的尝试,或者优雅地列出错误信息。
finally块:用来存放不管有没有异常都得执行的程序。
方法可以抛出多个异常。
异常是多态的,可以以异常的父型来声明和捕获异常。
有多个catch块时要从小排到大。
如果不想处理异常,可以把它duck掉来避开。
duck只是在踢皮球,如果main()也duck掉异常。。。
两种满足编译器的有风险方法调用方式:
1.处理:try/catch块
try{
laundry.doLaundry();
} catch(ClothingException ces) {
//恢复程序代码
}
2.声明(duck掉)
void foo() throws ClothingException {
laundry.doLaundry();
}
异常处理规则:
1.carch与finally不能没有try
2.try与catch之间不能有程序
3.try一定要有catch或finally
4.只带有finally的try必须声明异常