1.try-with-resources
作用:捕捉异常,同时关闭资源。
使用条件:
try-with-resources使用是java1.7增加了新特性,只要实现了AutoCloseable 或 Closeable,在try代码块结束之前,会自动关闭资源.。而字节输入流(InputStream),字节输出流(OutputStream),字符输入流(Reader),字符输出流(Writer)均实现了这接口。
官网: http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html
2.try-catch-finally
作用:捕捉异常,同时关闭资源。
3.两者区别
try-catch-finally:没有限制条件,finally不仅可以关闭资源,还可以用于执行其他代码块;
try-with-resources:代码更加简洁,有限制条件,资源会立即被关闭。
警告:finally关闭资源不会立即关闭,取决与网络和系统,可能会很快,也可能会等一两天,所以,最好不要使用finally作为业务流程的控制,在《Effective java》一书 的第9条:try-with-resources优先于try-finally 中有相关详细的介绍,其中提到了许多由于finally延迟导致的网络事件。