对于JDK7及以上版本,可以使用try-with-resources方式
使用方式:
/*** https://www.cnblogs.com/itZhy/p/7636615.html* 其实这种方式只是语法糖,反编译以后还是tryCacheThrowTest()中的代码* https://www.cnblogs.com/langtianya/p/5139465.html* Throwable#addSuppressed()作用:通常在finally中出现异常不是我们需要关注点,当一个异常被抛出的时候,* 可能有其他异常因为该异常而被抑制住,从而无法正常抛出,此时可以通过Throwable#addSuppressed()* 方法将异常记录到堆栈中,通过getSuppressed方法来获取这些异常*/@Testpublic void tryWithResourceTest(){try (FileInputStream inputStream = new FileInputStream(new File("test"))) {System.out.println(inputStream.read());} catch (IOException e) {throw new RuntimeException(e.getMessage(), e);}}
@Testpublic void tryCacheThrowTest(){try {FileInputStream inputStream = new FileInputStream(new File("test"));Throwable var2 = null;try {System.out.println(inputStream.read());} catch (Throwable var12) {var2 = var12;throw var12;} finally {if (inputStream != null) {if (var2 != null) {try {inputStream.close();} catch (Throwable var11) {var2.addSuppressed(var11);}} else {inputStream.close();}}}} catch (IOException var14) {throw new RuntimeException(var14.getMessage(), var14);}}