package core1;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class D12_ExceptionTest {
/**
* 不带资源的try,catch
*/
@Test
public void exam1(){
try{
}catch (Exception e){
//打印堆栈踪迹
e.printStackTrace();
//获取堆栈踪迹
StackTraceElement[] stackTrace = e.getStackTrace();
for(StackTraceElement s:stackTrace){
//分析
}
}finally {
/**
* .这里一定会执行,可以处理资源回收等问题,但在关闭资源时也可能抛出异常
* .所以不推荐,推荐使用exam2的格式
*/
}
}
/**
* .带资源的try,catch。
* .在实现了AotuCloseable或起子接口的类,在这个格式的try语句中若发生异常那么可以自动实现资源回收
*/
@Test
public void exam2(){
//不管这个块如何退出,in和out都会关闭
try (Scanner in = new Scanner(new FileInputStream("..."), "UTF-8");
PrintWriter out = new PrintWriter("...");
){
while(in.hasNext())
out.println(in.nextLine());
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
}
}
}
转载于:https://my.oschina.net/u/3357774/blog/3014124