打字猴:1.700448669e+09
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){
1700448685
1700448686 list.add(e);
1700448687
1700448688 }
1700448689
1700448690 //第二个逻辑片段
1700448691
1700448692 try{
1700448693
1700448694 //Do Something
1700448695
1700448696 }catch(Exception e){
1700448697
1700448698 list.add(e);
1700448699
1700448700 }
1700448701
1700448702 //检查是否有必要抛出异常
1700448703
1700448704 if(list.size()>0){
1700448705
1700448706 throw new MyException(list);
1700448707
1700448708 }
1700448709
1700448710 }
1700448711
1700448712 这样一来,doStuff方法的调用者就可以一次获得多个异常了,也能够为用户提供完整的例外情况说明。可能有读者会问:这种情况可能出现吗?怎么会要求一个方法抛出多个异常呢?
1700448713
1700448714 绝对可能出现,例如Web界面注册时,展现层依次把User对象传递到逻辑层,Register方法需要对各个Field进行校验并注册,例如用户名不能重复,密码必须符合密码策略等,不要出现用户第一次提交时系统提示“用户名重复”,在用户修改用户名再次提交后,系统又提示“密码长度少于6位”的情况,这种操作模式下的用户体验非常糟糕,最好的解决办法就是封装异常,建立异常容器,一次性地对User对象进行校验,然后返回所有的异常。
1700448715
1700448716
1700448717
1700448718
[ 上一页 ]  [ :1.700448669e+09 ]  [ 下一页 ]