通常我们使用try...catch()捕获异常的,如果遇到类似IO流的处理,要在finally部分关闭IO流,当然这个是JDK1.7之前的写法了;在JDK7优化后的try-with-resource
语句,该语句确保了每个资源,在语句结束时关闭。所谓的资源是指在程序完成后,必须关闭的流对象。写在()里面的流对象对应的类都实现了自动关闭接口AutoCloseable;
格式:
1 2 3 4 5 | try (创建流对象语句,如果多个,使用 ';' 隔开) { // 读写数据 } catch (IOException e) { e.printStackTrace(); } |
演示代码,下面的test目录是不存在的,运行会抛出异常;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | FileWriter fw = null ; try { fw = new FileWriter( "test\\test.txt" ); fw.write( "test" ); } catch (Exception ex) { ex.printStackTrace(); } finally { if (fw != null ) { try { fw.close(); } catch (IOException e) { e.printStackTrace(); } } } |
1 2 3 4 5 | try (FileWriter fw = new FileWriter( "test.txt" )) { fw.write( "test" ); } catch (Exception ex) { ex.printStackTrace(); } |