打字猴:1.700448735e+09
1700448735
1700448736 明白了异常为什么要传递,那接着的问题就是如何传递了。很简单,使用异常链进行异常的传递,我们以IOException为例来看看是如何传递的,代码如下:
1700448737
1700448738 public class IOException extends Exception{
1700448739
1700448740 //定义异常原因
1700448741
1700448742 public IOException(String message){
1700448743
1700448744 super(message);
1700448745
1700448746 }
1700448747
1700448748 //定义异常原因,并携带原始异常
1700448749
1700448750 public IOException(String message, Throwable cause){
1700448751
1700448752 super(message, cause);
1700448753
1700448754 }
1700448755
1700448756 //保留原始异常信息
1700448757
1700448758 public IOException(Throwable cause){
1700448759
1700448760 super(cause);
1700448761
1700448762 }
1700448763
1700448764 }
1700448765
1700448766 在IOException的构造函数中,上一个层级的异常可以通过异常链进行传递,链中传递异常的代码如下所示:
1700448767
1700448768 try{
1700448769
1700448770 //Do Something
1700448771
1700448772 }catch(Exception e){
1700448773
1700448774 throw new IOException(e);
1700448775
1700448776 }
1700448777
1700448778 捕捉到Exception异常,然后把它转化为IOException异常并抛出(此种方式也叫作异常转译),调用者获得该异常后再调用getCause方法即可获得Exception的异常信息,如此即可方便地查找到产生异常的根本信息,便于解决问题。
1700448779
1700448780 结合上一个建议来看,异常需要封装和传递,我们在进行系统开发时不要“吞噬”异常,也不要“赤裸裸”地抛出异常,封装后再抛出,或者通过异常链传递,可以达到系统更健壮、友好的目的。
1700448781
1700448782
1700448783
1700448784
[ 上一页 ]  [ :1.700448735e+09 ]  [ 下一页 ]