java使用resource时,使用try-with-resources代替try-catch-finally

try-with-resources是jdk1.7加入的机制,能够保证资源使用后正常关闭,并使代码更加简洁。java

 

try-catch-finally使用实例:spa

public void handle(String fileName) { BufferedReader reader = null; try { String line; reader = new BufferedReader(new FileReader(fileName)); while ((line = reader.readLine()) != null) { ... } } catch (Exception e) { ... } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { ... } } } }

能够看到为了保证resources正常关闭,finally中又使用if语句以及try-catch,增长了代码的复杂性。code

 

try-with-resources使用实例:blog

public void handle(String fileName) { try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { ... } } catch (Exception e) { ... } }

能够看到,try-with-resources的比前一种方法明显节省了不少代码,资源在try后边的()中生成,在try结束后程序会自动关闭资源。接口

 

若是须要声明多个资源,能够在try后面的()中,以;分隔;也就是说,try后边的()能够添加多行语句。资源

try (BufferedReader reader1 = new BufferedReader(new FileReader(fileName1));
  BufferedReader reader2 = new BufferedReader(new FileReader(fileName2));) {
  ...
} catch (Exception e) {
  ...
}get

 

须要注意的是,try后边括号中声明的资源必须实现java.lang.AutoCloseable,若是声明没实现这个接口的变量,IDE会进行提示'The resource type File does not implement java.lang.AutoCloseable'。it

好比我在里面声明了一个File类型的变量:io

 

参考:class

1.教你消灭 Java 代码的“坏味道” : https://mp.weixin.qq.com/s/rGXb_weYLVu0xQ2NmarBlQ

2.Java – Try with Resources : https://www.baeldung.com/java-try-with-resources

相关文章
相关标签/搜索