何时可以对业务逻辑使用异常处理?
我认为,作为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的弱点吗?