我认为在Java中(以及可能是任何具有异常处理的语言),普遍认为应该尽量避免使用异常处理来实际处理业务逻辑。通常,如果预计某种情况应该发生,那么应该直接检查并更直接地处理它,而不是依靠异常处理来为您进行检查。例如,以下示例不被认为是良好的做法:
try{
_map.put(myKey, myValue);
} catch(NullPointerException e){
_map = new HashMap<String, String>();
}
相反,惰性初始化应该更像这样实现:
if(_map == null){
_map = new HashMap<String, String>();
}
_map.put(myKey, myValue);
当然,可能会有更复杂的逻辑,而不仅仅是处理延迟初始化。因此,考虑到这种类型的事情通常是不被赞同的...在何时、如果有时,依赖于异常发生以进行某些业务逻辑是一个好主意?可以说,任何时候使用这种方法的情况实际上都凸显了所使用的 API 的弱点吗?
StopException
来停止迭代。对于这个答案的评论提到了Python的哲学:“宁愿请求原谅,也不要先问过许可”。 - Adam Paynter