读书人

请问一下关于错误处理的有关问题

发布时间: 2013-12-20 00:23:10 作者: rapoo

请教一下关于异常处理的问题
假如我的main方法要依次调用3个方法,f1(),f2(),f3().三个方法都可能抛出异常。
怎样设计异常处理,才能实现:
1. 不论三个方法是否抛出异常,都能依次执行f1,f2,f3。
2. 如果有异常,在main最后打出所有的异常信息。


[解决办法]

引用:
Quote: 引用:

Quote: 引用:

先给个思路,有事先闪人:
public static int flagIndex = 0;
public static StringBuffer errMsg = "";
public static void main(String[] args){
try{
f1();
flagIndex = 1;
f2();
flagIndex = 2;
f3();
}catch(Exception ex){
errMsg.append(ex.getMessage());
if(flagIndex == 0){
try{
f2();
flagIndex = 3;
f3();
}catch(Exception exx){
errMsg.append(exx.getMessage());
if(flagIndex==3){
try{
f3();
}catch(Exception exxxx){
errMsg.append(exxxx.getMessage());
}
}
}
}else if(flagIndex == 1){
//获取方法f2执行出现的异常信息
errMsg.append(ex.getMessage());
try{
f3();
}catch(Exception exxx){
errMsg.append(exxx.getMessage());
}
}else{
//获取方法f3执行出现的异常信息
errMsg.append(ex.getMessage());
}
}finally{
System.out.println(errMsg.toString());
}
}

感觉这样不如这样简洁:

public static void main(String[] args){
StringBuilder errMsg = new StringBuilder();
try{
f1();
}catch(Exception ex){
errMsg.append("f1()的异常信息:").append(ex.getMessage());
}
try{
f2();
}catch(Exception exx){
errMsg.append("f2()的异常信息:").append(exx.getMessage());
}
try{
f3();
}catch(Exception exxx){
errMsg.append("f3()的异常信息:").append(exxx.getMessage());
}
// 打印异常
System.out.println(errMsg.toString());

}


是不是就是说如果异常被捕获并且处理了,程序就不会终止,会继续往下顺序执行?

是的。
除非又在catch块里使用throw语句,将捕获的异常再抛出去,否则捕获了处理掉,就不会在异常发生处终止程序了。

读书人网 >J2SE开发

热点推荐