package com.itheima.demo06.trycatch;
import java.io.FileWriter;
import java.io.IOException;
/*
在 jdk1.7 之前使用 try catch finally 处理流中的异常
格式:
try{可能会产出异常的代码}catch(异常类变量 变量名){异常的处理逻辑}finally{
一定会指定的代码
资源释放
}
*/
public class Demo01TryCatch {
public static void main(String[] args) {
// 提高变量 fw 的作用域, 让 finally 可以使用
// 变量在定义的时候, 可以没有值, 但是使用的时候必须有值
//fw = new FileWriter("09_IOAndProperties\\g.txt",true); 执行失败,fw 没有值,fw.close 会报错
FileWriter fw = null;
try{
// 可能会产出异常的代码
fw = new FileWriter("w:\\09_IOAndProperties\\g.txt",true);
for (int i = 0; i <10 ; i++) {fw.write("HelloWorld"+i+"\r\n");
}
}catch(IOException e){
// 异常的处理逻辑
System.out.println(e);
}finally {
// 一定会指定的代码
// 创建对象失败了,fw 的默认值就是 null,null 是不能调用方法的, 会抛出 NullPointerException, 需要增加一个判断, 不是 null 在把资源释放
if(fw!=null){
try {
//fw.close 方法声明抛出了 IOException 异常对象, 所以我们就的处理这个异常对象, 要么 throws, 要么 try catch
fw.close();} catch (IOException e) {e.printStackTrace();
}
}
}
}
}