zoukankan      html  css  js  c++  java
  • IO异常的处理

    JDK7前处理
    之前的入门练习,我们一直把异常抛出,而实际开发中并不能这样处理,建议使用 try...catch...finally 代码
    块,处理异常部分,代码使用演示:
    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();
                }
            }
        }
    }
    
    JDK7的处理(扩展知识点了解内容)
    还可以使用JDK7优化后的 try-with-resource 语句,该语句确保了每个资源在语句结束时关闭。
        所谓的资源 (resource)是指在程序完成后,必须关闭的对象。
        格式:
        try (创建流对象语句,如果多个,使用';'隔开) {
            // 读写数据
        } catch (IOException e) {
            e.printStackTrace();
        }
    代码使用演示: public class HandleException2 {
        public static void main(String[] args) {
            // 创建流对象
            try ( FileWriter fw = new FileWriter("fw.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) {
        // 使用对象
    }
    改进后,代码使用演示:
    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中
            try (fr; fw) {
                // 定义变量
                int b;
                // 读取数据
                while ((b = fr.read())!=‐1) {
                    // 写出数据
                    fw.write(b);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    深入剖析C#的多态
    .NET多线程编程:多任务和多线程
    .Net类库中实现的HashTable
    用C#编写ActiveX控件
    用微软.NET架构企业解决方案 学习笔记(四)业务层
    SQL事务
    WCF基础知识问与答
    在.NET环境中使用单元测试工具NUnit
    圣殿骑士博客转载系列
    系统架构师学习笔记_第十二章
  • 原文地址:https://www.cnblogs.com/King-boy/p/11236404.html
Copyright © 2011-2022 走看看