当前位置: java基础教程 > 12-java.io基础IO包 > 阅读正文

捕获处理 I/O 流异常

2021.2.8.   462 次   836字

I/O 操作很容易产生 I/O 异常,若不释放资源会产生内存泄漏

对于 I/O 异常,有几种简单的方式

1.使用最普通的 try-catch-finally
FileWriter fw = null; //提高变量的作用域
try{
    //可能会产生异常的代码
    fw = new FileWriter("D:\\a.txt",true);
    for(int i=0;i<10;i++){
        fw.write("java教程"+i+"\r\n");
    }
}catch(IOException e){
    //处理异常
    System.out.println(e);
}finally{
    //必须进行的代码,这里指关闭资源
    if(fw!=null){
        try{
            fw.close();
        }catch(IOException e){
            System.out.println(e);
        }
    }
}
2.jdk7的新特性

把可能出异常的变量,定义在 try() 的小括号中,作用域只在 try 中, 不需要finally

try(FileWriter fw = new FileWriter("D:\\a.txt",true);){
    //可能会产生异常的代码
    for(int i=0;i<10;i++){
        fw.write("java教程"+i+"\r\n");
    }
}catch(IOException e){
    //处理异常
    System.out.println(e);
}
3.jdk9的新特性

在 try() 的小括号中,引入外部定义的变量,它的作用域也会限定在 try 中

FileWriter fw = new FileWriter("D:\\a.txt",true); //定义抛出异常
try(fw){
 //多个变量用  分号;  隔开
    //可能会产生异常的代码
    for(int i=0;i<10;i++){
        fw.write("java教程"+i+"\r\n");
    }
}catch(IOException e){
    //处理异常
    System.out.println(e);
}
//一旦超出了 try 定义域,流会自动关闭,
//虽然 fw 作用域在外部,但使用会报错

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群