9.4 IO异常的处理
9.4.1 JDK7以前的处理
实际开发中异常抛出不会经常使用,而是使用try...catch...finally
代码块,处理异常部分,代码使用演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class HandleException1 { public static void main(String[] args) { FileWriter fw = null; try { fw = new FileWriter("fw.txt"); fw.write("黑马程序员"); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fw != null) { fw.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
|
9.4.2 JDK7的处理
还可以使用JDK7优化后的try-with-resource
语句,该语句确保了每个资源在语句结束时关闭。所谓的资源(resource)是指在程序完成后,必须关闭的对象。
格式:
1 2 3 4 5
| try (创建流对象语句,如果多个,使用';'隔开) { } catch (IOException e) { e.printStackTrace(); }
|
代码使用演示:
1 2 3 4 5 6 7 8 9 10 11
| public class HandleException2 { public static void main(String[] args) { try ( FileWriter fw = new FileWriter("fw.txt"); ) { fw.write("黑马程序员"); } catch (IOException e) { e.printStackTrace(); } } }
|
9.4.3 JDK9的改进
JDK9中try-with-resource
的改进,对于引入对象的方式,支持的更加简洁。被引入的对象,同样可以自动关闭,无需手动close,我们来了解一下格式。
改进前格式:
1 2 3 4 5 6 7 8 9
| final Resource resource1 = new Resource("resource1");
Resource resource2 = new Resource("resource2");
try (Resource r1 = resource1; Resource r2 = resource2) { }
|
改进后格式:
1 2 3 4 5 6 7 8
| final Resource resource1 = new Resource("resource1");
Resource resource2 = new Resource("resource2");
try (resource1; resource2) { }
|
改进后,代码使用演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class TryDemo { public static void main(String[] args) throws IOException { final FileReader fr = new FileReader("in.txt"); FileWriter fw = new FileWriter("out.txt"); try (fr; fw) { int b; while ((b = fr.read())!=‐1) { fw.write(b); } } catch (IOException e) { e.printStackTrace(); } } }
|
本文标题:第三部分 第九章 4.IO异常的处理
文章作者:foreverSFJ
发布时间:2019-08-21 08:29:49
最后更新:2019-08-21 08:29:49
原始链接:Notes/Java/Basic/Part03/09_4 IO异常的处理.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!