使用try_catch_finally处理流中的异常和JDK7流中的异常处理

在jdk1.7之前使用try_catch_finally处理流中的异常
格式:

try{
可能会出现异常的代码
}catch(异常类变量 变量名){
异常的处理逻辑
}finally{
一定会执行的代码
资源释放
}

代码实现:

package com.yang.Test.IOStudy.OutStudy;

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

public class demo05 {
    public static void main(String[] args) {

        FileWriter fw = null;
        //可能会出现异常的代码
        try {
            fw = new FileWriter("Document\\1.txt", true);
            for (int i = 0; i < 10; i++) {
                fw.write("HelloWorld" + i + "\r\n");
            }
            //异常的处理逻辑
        } catch (IOException e) {
            System.out.println(e);
            //一定会执行的代码
            //资源释放
        } finally {
            try {
                fw.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }


    }
}

JDK7和JDK9流中的异常处理

package com.yang.Test.IOStudy.OutStudy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * JDK7的新特性
 * 在try的后边可以增加一个(),在括号中可以定义流对象
 * 那么这个流对象的作用域就在try中有效
 * try中的代码执行完毕,会自动吧流释放,不用谢finally
 * 格式:
 * try(定义流对象;定义流对象.....){
 *     可能会产出异常的代码
 * }catch(异常类变量 变量名){
 *     异常的处理逻辑
 * }
 */
public class demo06 {
    public static void main(String[] args) {
        try (
                FileInputStream fis = new FileInputStream("1.txt");
                FileOutputStream fos = new FileOutputStream("b.txt");
                ) {
                int len = 0;
                while((len = fis.read())!=-1){
                    fos.write(len);
                }
        } catch (IOException e) {
            System.out.println(e);
        }


    }
}

posted @ 2022-07-18 11:15  我滴妈老弟  阅读(41)  评论(0编辑  收藏  举报