Java 避免异常屏蔽 - addSuppressed

在使用inputstream等资源的时候,会在finally中关闭资源,关闭资源时也可能会抛出异常。
 
如果:
try执行时会抛出异常 e1,
finally 关闭资源时也可能会抛出异常 e2,
此时e2自然就把e1给冲掉了,
外面只能捕获到一个异常e2。
怎么解决这个问题呢?
 
在java7中为Throwable类增加addSuppressed方法。
当一个异常被抛出的时候,可能有其他异常因为该异常而被抑制住,从而无法正常抛出。
这时可以通过addSuppressed方法把这些被抑制的方法记录下来。
被抑制的异常会出现在抛出的异常的堆栈信息中,也可以通过getSuppressed方法来获取这些异常。
这样做的好处是不会丢失任何异常,方便开发人员进行调试。
 

 

 

 
 

posted on 2019-11-15 18:50  HB1  阅读(972)  评论(0)    收藏  举报

导航