使用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);
}
}
}