SuppressedException
用来保存被屏蔽的异常,可通过Throwable.getSuppressed()获得。添加的话用addSuppressed(Throwable exception),这个函数一般是在try-with-resources语句中由自动调用的。
try-with-resources中抑制异常的使用
在使用try-with-resources语句的时候,异常可能发生在try语句中,也可能发生在释放资源时。如果资源初始化时或try语句中出现异常,而释放资源的操作正常执行,try语句中的异常会被抛出;如果try语句和释放资源都出现了异常,那么最终抛出的异常是try语句中出现的异常,在释放资源时出现的异常会作为被抑制的异常添加进去,即通过Throwable.addSuppressed方法来实现。
java 中的AutoCloseable
能够被try语句所管理的资源需要满足一个条件,那就是其Java类要实现java.lang.AutoCloseable接口,否则会出现编译错误。当需要释放资源的时候,该接口的close方法会被自动调用。
try-catch-finally
- 无论try中的异常是否发生,finally子句都会在最后都会执行
- 如果try子句中的语句正常执行到return语句,finally子句也会执行
- 对于try子句如果有finally子句,则可以不用catch子句