java - 如何在抛出异常后继续执行程序?

标签 java

我有一个要求,即使在抛出异常后,程序执行流程也应该继续。

for(DataSource source : dataSources) {
    try {
        //do something with 'source'
    } catch (Exception e) {
    }
}

如果在第一次迭代中抛出异常,则流程执行停止。我的要求是即使在第一次迭代抛出异常之后,其他迭代也应该继续。 我可以在 catch block 中编写逻辑吗?

最佳答案

首先,

异常有两种类型。选中和未选中。

未经检查的异常是您的程序无法从中恢复的异常。就像 NullPointers,告诉你你的逻辑确实有问题。

已检查的异常是运行时异常,您可以从这些异常中恢复。

因此,您应该避免使用 catch 语句来查找“Exception”基类。这两个时间都代表。您可能应该考虑寻找特定的异常(通常是运行时异常的子类)。

简而言之,还有更多内容。

您还应该记住,您不应该将异常处理用作工作流。通常表明您的体系结构存在某种缺陷。顾名思义,它们应该被视为正常执行的“异常(exception)”。

现在,考虑你的代码:

for(DataSource source : dataSources) {
    try {
        //do something with 'source'
    } catch (Exception e) { // catch any exception
      continue; // will just skip this iteration and jump to the next
    }
   //other stuff ? 
}

事实上,它应该捕获异常并继续。也许你有什么事没有告诉我们? :P

无论如何,希望这对您有所帮助。

关于java - 如何在抛出异常后继续执行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10412995/

相关文章:

java - YAML、时间戳和 SnakeYAML 引擎

java servlet错误包不存在

java - 如何在java中生成行优先和列优先矩阵?

Java GMT 显示

java - 同步 Android sqlite 数据库和 GAE 数据存储

Java printf 失败 : UnknownFormatConversionException

java - ASP.NET 页面调用 Java Applet 和字段失去焦点

java - 如何在java中使用FastDateFormat来查找当前日期是否在给定日期之间?

java - 通过使用 Java 8 将元素添加到链表中来比较数组列表和链表

java - 在 Docker 容器中运行的 JVM 的驻留集大小 (RSS) 和 Java 总提交内存 (NMT) 之间的差异