Head First Java笔记(三)

异常处理

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必须声明异常




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值