在什么情况下可以使用异常处理来处理业务逻辑?

24 浏览
0 Comments

在什么情况下可以使用异常处理来处理业务逻辑?

我认为一般来说,在Java中(也许在任何具有异常处理的语言中),应该尽量避免使用异常处理来处理业务逻辑。通常情况下,如果预期某种情况应该发生,应该直接检查并处理,而不是依靠异常处理来进行检查。例如,以下做法被认为不好:

try{
  _map.put(myKey, myValue);
} catch(NullPointerException e){
  _map = new HashMap();
}

相反,应该更像这样实现延迟初始化:

if(_map == null){
  _map = new HashMap();
}
_map.put(myKey, myValue);

当然,可能存在比简单的延迟初始化更复杂的逻辑。鉴于通常不赞成使用这种方式...那么,在什么情况下,如果有的话,依赖异常发生来实现某些业务逻辑是一个好主意?可以说,任何感到必须使用这种方法的情况实际上都凸显了所使用API的弱点。

0