代码:
String[] logs={"a","b","c"};
int errors=0;
for(String str:logs){
try{
LogParser.parse(str);
} catch(ParseException e){
error++;
continue; // Seems that, this two line codes are not reached.
}
}
在上面的代码中,LogParser用于解析组合模式的tomcat日志,当获取日期格式数据时,我使用SimpleDateFormat将其解析为Java.Util.Date对象,然后可能会抛出ParseException。这里的日志数组只是用来抛出异常。
然而,当这个异常在解析一个日志时发生时,应用程序将退出,我希望它继续下一个日志。
如何制作?
我已阅读教程:
http://download.oracle.com/javase/tutorial/essential/exceptions/catchOrDeclare.html .
它表示 Error 和 RuntimeException 不受 try catch block 的影响,应用程序无论如何都会退出。
但是 java.text.ParseException 扩展了 Exception,为什么它不能受制于我的 try-catch block ? 由于“错误”变量不是 +1,
我想用这个:
finally{
error++;
continue;
}
是的,它有效,但是当日志被正确解析时,错误也会被添加,它不应该是。
谁能告诉我为什么?
最佳答案
您正在捕获 ParseException
,但可能抛出了另一种异常类型。尝试将其替换为 (Exception e)
并查看您抛出的类型。然后您可以将捕获的范围缩小到适当的异常类型。
String[] logs={"a","b","c"};
int errors=0;
for(String str:logs){
try{
LogParser.parse(str);
} catch(Exception e){ // <-- try this
error++;
continue;
}
}
关于java - 发生异常时继续我的申请,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964783/