46.IO异常处理

一、JDK之前的处理

实际开发中,建议使用try...catch...finally代码块处理异常部分。

FileWriter fw = null;
try {
    fw = new FileWriter(".\\day_09\\a.txt");
    fw.write("我是一个兵,来自老百姓");
} catch (IOException e){
    e.printStackTrace();
} finally {
    try{
        if(fw != null)
            fw.close();
    } catch (IOException e){
        e.printStackTrace();
    }
    
}

二、JDK7的处理【拓展了解】

使用优化的try-with-resource语句,确保了每个资源在结束时关闭。

try(创建流对象语句,如果多个,用';'隔开) {
    // 读写数据
} catch(IOException e)
    e.printStackTrace();
try (FileWriter fw = new FileWriter("a.txt")){
    fw.write("哈哈");
} catch (IOException e) {
    e.printStackTrace();
}

三、JDK9的处理【拓展了解】

JDK9中 try-with-resource 的改进,对于引入对象的方式,支持的更加简洁。被引入的对象,同样可以自动关闭,无需手动close

改进后的格式

// 被final修饰的对象
final Resource re1 = new Resource("re1");
// 普通对象
Resource re2 = new Resource("re2");

try (re1;re2){
    // 读写
}

如下演示

final FileReader fr = new FileReader("day_09\\a.txt");
FileWriter wr = new FileWriter("day_09\\b.txt");

try (fr;wr){
    int b;
    while ((b = fr.read()) != -1){
        wr.write(b);
    }
}
// 当然,也可以写catch
    try (fr;wr){
        int b;
        while ((b = fr.read()) != -1){
            wr.write(b);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

你可能感兴趣的:(46.IO异常处理)