1.使用try-catch-finally处理流中的异常
在jdk1.7之前 try catch finally处理流中的异常
格式:try{
可能会产生异常的代码
}catch(异常类的变量 变量名){
异常的处理逻辑
}finally{
一定会执行的代码
资源的释放
package demo05;
import java.io.FileWriter;
import java.io.IOException;
public class Demo05TryCatch {
public static void main(String[] args) {
FileWriter fw = null;
//提高变量fw的作用域,让finally可以使用
//变量定义时看有没有值但是使用时一定要有值
// FileWriter fw = new FileWriter("D:\IdeaProjects\新建文件夹\k.txt", true);若执行失败 fw就没有值 fw.close();就执行失败
try {
fw = new FileWriter("D:\IdeaProjects\新建文件夹\k.txt", true);
for (int i = 0; i < 10; i++) {
fw.write("HelloWorld" + i + "rn");
}
//fw.close();//如果关闭前面的代码出现了问题就不会资源释放所以放在finally中
} catch (IOException e) {
System.out.println(e); //处理逻辑:打印异常
} finally {//一定会执行的代码
//如果创建对象失败了(好比找不到文件路径),fw的默认值是null,而null是不能调用方法的会抛出空指针异常NollPointerException
//需要增加一个判断,不是null再释放资源
if (fw != null) {
try {
fw.close(); // 直接fw.close();报错 因为超出了变量的作用域 close有异常所以try catch一次
} catch (IOException e) {
e.printStackTrace();
}//fw.close();方法声明抛出了IOException异常对象,所以要处理这个异常要么throws,要么try...catch
}
}
}
}
以上注意几点:
1.FileWriter fw = null 定义在外面是因为变量的作用域问题;
2.finally中加了一个判断fw!=null是为了创建对象失败时抛出空指针异常
2.JDK7和JDK9流中异常的处理



