`

checked exception还是non checked exception

阅读更多

使用检测异常和不可检测异常:

 

1.在一般情况下,使用检测异常还是非检测异常的判断标准是客户端(调用者)能够处理它们。

 

像JDBC的SQLException是检测异常,把它设计成checked exception,不一定是合理,因为大多数情况下,调用者是无法处理的。当然有一种情况,调用者可以这样处理:它捕获SQLException,然后给用户提示:数据库执行失败,这也是一种处理方式。但是大多数情况下,这种异常是无法处理的,对这种大多数情况知道调用者无法处理的异常,应该被声明为unChecked Exception的。当某些情况调用者需要处理时,仍然可以捕获它进行处理,这样反而比较灵活。

 

对于一些业务异常,调用者可以处理它们,应该需要将它们设计成checked exception,如

DuplicatedUserException:用户注册时,选择了和别人重名的UserID;

LackOfBalanceException:用户提款时,余额不足。

等等

 

2.异常是抛出还是不要抛出

在很多程序中,捕获了异常,并把异常信息隐藏掉,是异常代码书写的反模式,调用者如果确定无法处理它,还是尽量抛出比较合理,异常信息无端地被忽略,对于调用者发现错误和调式都是不利的。笔者经常碰到这类代码,给笔者的调式带来了极大的不便。不仅如此,调用者调用你的代码时,本来可以处理的异常也被你给忽略了,所以在异常处理的时候,抛出还是不要抛出的标准很简单,那就是你的代码能不能处理它们,否则不要轻易捕获。

 

 

 

好文参考:

http://fluagen.blog.51cto.com/146595/38630/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics