打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
读《Effective java 中文版》(44)

读《Effective java 中文版》(44)

第43条:抛出的异常要适合于相应的抽象
  高层的实现,应该捕获低层的异常,同时抛出一个可以按照高层抽象进行解释的异常,这种做法叫做异常转译(exception translation)。即如:
//exception translation!
try{
//use lowlevel abstraction to do our bidding
...
}catch(LowerLevelException e){
throw new HigherLevelException(...);
}
  低层的异常被高层的异常保存起来,且高层的异常提供一个公有的访问方法来获得低层的异常,这种做叫做异常链接(exception chaining)。
//Exception chaining.
try{
//use lower-level abstraction to do our bindding
...
}catch(LowerLevelException e){
throw new HigherLevelException(e);
}

  异常链的实现非常简单,在1.4及以后版本中,可以通过Throwable来获得支持。
//Exception chaining in release 1.4 or later
HigherLevelException(Throwable t){
super(t);
}
  如果是在早期java版本中,则需要先将其保存:
//Exception chaining prior to release 1.4
private Throwable cause;
HigherLevelException(Throwable t){
cause=t;
}
public Throwable getCause(){
return cause;
}
  处理来自低层的异常,

  1. 最好的做法是,在调用低层方法之前通过一些检查等手段来确保它们会成功执行;
  2. 其次的做法是,让高层处理这些异常,从而将高层方法的调用者与低层的问题隔离开;
  3. 一般的做法是使用异常转译;
  4. 如果低层方法的异常对高层也是合适的,则将其从低层传到高层。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
带你快速看完9.8分神作《Effective Java》—— 异常篇(你真的会用异常吗?)
读《Effective java 中文版》
★各种计算机语言的经典书籍,让您少走不少弯路ZZ
?买房应该买高层还是低层,哪一层?
聪明人都卖掉高层,搬入低层?
语言之间的接口和适配层 -- NothingHere -- 编程爱好者博客
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服