打字猴:1.700448635e+09
1700448635
1700448636 }
1700448637
1700448638 }
1700448639
1700448640 如此包装后,维护人员看到这样的异常就有了初步的判断,或者检查配置,或者初始化环境,不需要直接到代码层级去分析了。
1700448641
1700448642 (3)解决Java异常机制自身的缺陷
1700448643
1700448644 Java中的异常一次只能抛出一个,比如doStuff方法有两个逻辑代码片段,如果在第一个逻辑片段中抛出异常,则第二个逻辑片段就不再执行了,也就无法抛出第二个异常了,现在的问题是:如何才能一次抛出两个(或多个)异常呢?
1700448645
1700448646 其实,使用自行封装的异常可以解决该问题,代码如下:
1700448647
1700448648 class MyException extends Exception{
1700448649
1700448650 //容纳所有的异常
1700448651
1700448652 private List<Throwable>causes=new ArrayList<Throwable>();
1700448653
1700448654 //构造函数,传递一个异常列表
1700448655
1700448656 public MyException(List<?extends Throwable>_causes){
1700448657
1700448658 causes.addAll(_causes);
1700448659
1700448660 }
1700448661
1700448662 //读取所有的异常
1700448663
1700448664 public List<Throwable>getExceptions(){
1700448665
1700448666 return causes;
1700448667
1700448668 }
1700448669
1700448670 }
1700448671
1700448672 MyException异常只是一个异常容器,可以容纳多个异常,但它本身并不代表任何异常含义,它所解决的是一次抛出多个异常的问题,具体调用如下:
1700448673
1700448674 public static void doStuff()throws MyException{
1700448675
1700448676 List<Throwable>list=new ArrayList<Throwable>();
1700448677
1700448678 //第一个逻辑片段
1700448679
1700448680 try{
1700448681
1700448682 //Do Something
1700448683
1700448684 }catch(Exception e){
[ 上一页 ]  [ :1.700448635e+09 ]  [ 下一页 ]