前言
小时候写Java代码碰见异常要么全抛,要么全捕。没有优雅的处理过异常,自然也就谈不上利用Java优秀的异常处理机制了。
![](https://img.haomeiwen.com/i14775913/7338945be02df13c.png)
其实Java的异常处理机制是很强大的功能,用的好的话往往能起到事半功倍的效果。
1、异常包装技术
在异常处理里面再次抛出异常,若是按如下方式一抛出,则无法获取到原如异常。
而使用异常包装技术,将异常包装之后再抛出,则可以在捕获异常时可以通过异常类的方法获取到原始异常
![](https://img.haomeiwen.com/i14775913/14724a30eded0df0.png)
2、解耦try/catch和try/finally语句块
代码应遵循单一职责原则,最好不要互相嵌套。
如下代码中finally只负责关闭资源,而catch中不仅捕获try中发生的异常,也捕获finally中发生的异常。
![](https://img.haomeiwen.com/i14775913/2d1e5300b9f9acc1.png)
3、不要在finally中使用return
因为finally是在整个异常处理器执行完后执行,若在finally中使用了return,则最终的返回结果均是来自finally中的return。
![](https://img.haomeiwen.com/i14775913/2bfac1497fcb131e.png)
4、使用带资源的try语句(try-with-resource)
若资源类实现了Closeable或AutoCloseable接口,则可以在try括号中初始化资源
![](https://img.haomeiwen.com/i14775913/afaabe58ddf09e77.png)
网友评论