java - 发生异常时继续我的申请

标签 java exception

代码:

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/

相关文章:

java - 验证 Spring Data 查询参数中的集合不为空

java - 捕获异常后代码不工作

java.io.IOException : Invalid argument and Too many open files

c# - 在 C# 中处理文件时如何正确处理异常

iphone - NSInvalidUnarchiveOperationException : cannot decode object of class (UITableViewCellContentView)

java - JTree 只使树叶可拖动

java - 实现 ObservableList,扩展 ObservableListWrapper

java - 如何安全地复制 Collection ?

java - 以字符串格式获取日期哪个经济?每次都创建日期对象或通过日历对象使用日期实例

python - 我应该把 try/except 放在哪里?