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();
            }
        }
    }
  • 相关阅读:
    Introduction to PostGIS 之加载shp数据
    缺陷管理总结篇
    对lIKE语句的优化
    数据库查询优化
    如何在 32 位版本的 ASP.NET 1.1 和 64 位版本的 ASP.NET 2.0 之间切换
    加载启动目录以外的DLL(Assembley)的3种方法
    C#中使用windows medie player控件
    在Asp.net中使用多线程
    编程控制windows防火墙的exception list.
    读书笔记Win32多线程程序设计(1)
  • 原文地址:https://www.cnblogs.com/King-boy/p/11236404.html
Copyright © 2011-2022 走看看