先给个思路,有事先闪人:
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 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());
}
}
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());
}
[/code]嗯,赞同
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());
}是不是就是说如果异常被捕获并且处理了,程序就不会终止,会继续往下顺序执行?
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());
}我注意到oh_Maxy mao哥,你这里都是在main里面搞,如果不是main里面,而是一个private void exe()里面,这样写很容易出问题吧?
我觉得加个finally{}比较好 ...
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());
}我注意到oh_Maxy mao哥,你这里都是在main里面搞,如果不是main里面,而是一个private void exe()里面,这样写很容易出问题吧?
我觉得加个finally{}比较好 ...
不用加finally,因为每个catch块已经将异常捕获了,相当于内部消化掉了。
finally可有可无。
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语句,将捕获的异常再抛出去,否则捕获了处理掉,就不会在异常发生处终止程序了。