作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个要求,即使在抛出异常后,程序执行流程也应该继续。
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/
我是一名优秀的程序员,十分优秀!