IO 异常的处理
JDK1.7之前的处理
public static void main(String[] args) {
// 提高变量的作用域,让finally语句块中能够使用到。
FileWriter fw = null;
try {
// 1. new
// 可能会产生异常
fw = new FileWriter("day28_IO\\g.txt", true);
// 2. write
fw.write(97);
// 3. 刷新
fw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 4.
try {
fw.close();// Variable 'fw' might not have been initialized
} catch (IOException e) {
e.printStackTrace();
}
}
}
JDK7新特性
可以使用try-with-resource语句,该语句确保了每个资源在语句结束时关闭,所谓的资源(resource)是指在程序完成后,必须要关闭的对象。
格式:
try(创建流对象语句,如果多个,请使用";"隔开) {
// 可能产生异常的代码
} catch (异常类型 异常变量名) {
// 异常处理逻辑
}
示例代码:
public static void main(String[] args) {
try(
// 1.1 new
FileOutputStream fw = new FileOutputStream("day28_IO\\2.jpg");
// 1.2 new
FileInputStream fr = new FileInputStream("C:\\Users\\admin\\Desktop\\2.jpg");
) {
// 2. write
int len = 0;
while ((len = fr.read()) != -1) {
fw.write(len);
}
} catch (IOException e) {
// 异常的处理逻辑
e.printStackTrace();
}
}