Java异常处理的注意点总结

总结一下看到的Java异常处理的注意点的内容

1)  Checked Exception和UncheckedException的选择

这一点其实仁者见仁智者见智。

Checked Exceptions 应该定义为:可以被预料到,却无法避免,但是可以进行适当处理的异常。

Unchecked Exceptions 则是Checked Exceptions以外的异常

  1. 可以被预料到,却无法避免: 可以尽一切可能去验证输入内容,但是一些控制之外的状况会引起操作失败。比如尝试读取文件时,有人在你检查文件是存在之后,读取文件之前的时间段内删除了文件。通过定义一个Checked Exceptions使方法调用者可以预期到这个错误。
  2. 可以进行适当处理: 这个预期错误并不是无法恢复。例如:当用户尝试读取一个不存在的文件时,可以提示他提供一个新的文件名。另一方面,如果是由于bug造成的问题,程序无法修复。最好的办法是在异常处理中输出Log,等待开发者稍后处理。

2)在每一级重新评估: 

有时候,捕获异常的方法并不是处理异常的正确地方。在这种情况下,考虑一下对于自己的调用者,怎样的处理才是合适的。如果对于调用者,这个异常是可预期、不可预防、但是可以进行适当处理的,你应当抛出一个checked exception 。否则,你应当将异常包装为unchecked exception。

对于checked 和 unchecked exceptions,使用正确的抽象级别. 例如, 一个仓库类有两个不同的实现 (database 和 filesystem) 应当避免抛出SQLException or IOException暴露具体的实现细节。 作为替代, 应该把例外包装在一个抽象的概念中,涵盖所有的实现 ( RepositoryException).

3)catch不同级别的exception

抛出多个异常时,需要catch不同级别的exception,以便进行针对性处理。多个catch代码块中捕获的exception范围必须从小到大,最后是Exception类。

4)有效利用finally代码块

异常处理之后,要在finally代码块中保证db链接关闭,读写流关闭,锁释放等操作。避免内存泄露等状况。


持续学习中,若有补充,随时更新。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值