读《Effective java 中文版》(44)
来源:百度文库 编辑:神马文学网 时间:2024/04/28 02:39:04
第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;
}
处理来自低层的异常, 最好的做法是,在调用低层方法之前通过一些检查等手段来确保它们会成功执行;
其次的做法是,让高层处理这些异常,从而将高层方法的调用者与低层的问题隔离开;
一般的做法是使用异常转译;
如果低层方法的异常对高层也是合适的,则将其从低层传到高层。
高层的实现,应该捕获低层的异常,同时抛出一个可以按照高层抽象进行解释的异常,这种做法叫做异常转译(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;
}
处理来自低层的异常, 最好的做法是,在调用低层方法之前通过一些检查等手段来确保它们会成功执行;
其次的做法是,让高层处理这些异常,从而将高层方法的调用者与低层的问题隔离开;
一般的做法是使用异常转译;
如果低层方法的异常对高层也是合适的,则将其从低层传到高层。
读《Effective java 中文版》(44)
读《Effective java 中文版》
读《Effective java 中文版》
effective java读书笔记
Effective Java 笔记(二) - ilibaba的专栏 - CSDNBlog
Effective Java 笔记(五) - ilibaba的专栏 - CSDNBlog
Effective Java 笔记(六) - ilibaba的专栏 - CSDNBlog
Effective Java 笔记(七) - ilibaba的专栏 - CSDNBlog
Java 6 JVM参数选项大全(中文版)
effective java中讲到的hashCode的算法
条款19:定义并实现接口优于继承类型 - 《Effective C#中文版:改善C#程序的...
(中文版)
Effective Networking
小王子(中文版)
《断背山》(中文版小说)
Velocity用户指南(中文版)(2)
《达芬奇密码》中文版(全)
三亚旅游(中文版)实用手册(下)
《哥本哈根协议》全文(中文版)
《海龟交易法则》(中文版)
国际歌 中文版歌词(完整)
三亚旅游(中文版)实用手册(上)
14.7. JasperReports - Spring Framework reference 2.0.5 参考手册中文版 - 在线文档 - JAVA 编程资料牛鼻站
《Effective C#》翻译札记