首先,

有两种类型的例外.检查&未选中.

未经检查的异常是您的程序无法恢复的异常.就像NullPointers一样,告诉你你的逻辑确实存在问题.

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

因此,您应该避免使用catch statemens查找“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

无论如何,希望这会有所帮助.