Java基础 第四节 第十四课

举报
我是小白呀iamarookie 发表于 2021/09/10 23:55:47 2021/09/10
1.6k+ 0 0
【摘要】 IO 异常的处理 JDK7 前处理JDK7 的处理JDK9 的改进 JDK7 前处理 之前的学习中, 我们一直把异常抛出. 而实际开发中并不能这样处理, 建议使用try...catch.....

JDK7 前处理

之前的学习中, 我们一直把异常抛出. 而实际开发中并不能这样处理, 建议使用try...catch...finally代码块, 处理异常部分. 代码展示:

import java.io.FileWriter;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        // 声明变量
        FileWriter fw = null;
        try{
            // 创建流对象
            fw = new FileWriter("read.txt");
            // 写出数据
            fw.write("程序员");  // 程序员
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                assert fw != null;
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

  
 

JDK7 的处理

我们还可以使用 JDK7 优化后的```try-with-resource``语句, 该语句确保了每个资源在语句结束时关闭. 所谓的资源 (resource) 是指在程序完成后, 必须关闭的对象.

格式:

try (创建流对象语句,如果多个,使用';'隔开) {
    // 读写数据
} catch (IOException e) {
    e.printStackTrace();
}

  
 

代码展示:

import java.io.FileWriter;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        // 创建流对象
        try (FileWriter fw = new FileWriter("read.txt")){
            // 写出数据
            fw.write("程序员");
        } catch (IOException e){
            e.printStackTrace();
        }
    }
}

  
 

JDK9 的改进

JDK9 中```try-with-resource``的改进, 对于引入对象的方式, 支持的更加简洁. 被引入的对象, 同样可以自动关机, 无需手动 close, 我们来了解一下格式.

改进格式:

// 被final修饰的对象
final Resource resource1 = new Resource("resource1");
// 普通对象
Resource resource2 = new Resource("resource2");
// 引入方式:创建新的变量保存
try (Resource r1 = resource1;
    Resource r2 = resource2) {
    // 使用对象
}

  
 

改进后格式:

// 被final修饰的对象
final Resource resource1 = new Resource("resource1");
// 普通对象
Resource resource2 = new Resource("resource2");
// 引入方式:直接引入
try (resource1; resource2) {
    // 使用对象
}

  
 

改进后, 代码展示:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws IOException {
        // 创建流对象
        final FileReader fr = new FileReader("read.txt");
        FileWriter fw = new FileWriter("out.txt");
        
        // 引入到try中
        try(fr;fw){
            // 定义变量
            int b;
            // 读取数据
            while ((b = fr.read()) != -1){
                // 写出数据
                fw.write(b);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}

  
 

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/110427550

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。