语法
带资源的try语句,英文try-with-resources,JDK1.7及之后有效:
1 | try(/** |
示例:
1 | try (BufferedReader br = new BufferedReader(new FileReader("text.txt"))){ |
与不带资源try的对比
如果只有一个资源使用try-with-resources并无太大优势,try/catch/finally则更简洁一点。但是当多个资源同时打开时,就方便太多了,对比如下:
try-with-resources
1 | try (BufferedReader br1 = new BufferedReader(new FileReader("text1.txt")); |
JDK1.7之前
1 | BufferedReader br1 = null; |
注意:JDK1.7之前正确关闭的资源是finally和try互相嵌套才能正确关闭,下面这种是错误的:
1 | BufferedReader br1 = null; |
常见异常
之前开发时经常出现一个异常提示如下:
1 | java.io.IOException: 您的主机中的软件中止了一个已建立的连接 |
后来发现调用的框架工具中未正确关闭资源,导致连续请求时触发该异常。