A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 牛合超 中级黑马   /  2013-3-7 21:45  /  1566 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 牛合超 于 2013-3-8 16:06 编辑

public void calculate(){
                try{
                        int num=0;
                        int num1=42/num;
                }catch(Exception e){
                        System.out.println("异常catch子句1");
                }catch(ArithmeticException ae){
                        System.out.println("异常catch子句2");
                }
        }
        public static void main(String[] args) {
               
                ExceptionCode obj=new ExceptionCode();
                               obj.calculate();
        }
多重catch块练习,什么情况,报 1 error 错误,,这是啥意思。。。。赐教。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

倒序浏览
ArithmeticException是Exception的一个子类,当catch多个异常时,先catch子类异常,父类异常要放在最后!
如果先捕获父类异常,那么即便是子类异常路过,也会被catch(父类异常)捷足先登的捕获,这样的话catch(子类异常),就是在那傻等着没事干了,所以编译失败啦。
下面是改正的代码
     public void calculate(){
                try{
                        int num=0;
                        int num1=42/num;
                }
                               
                                catch(ArithmeticException ae){//先catch子类异常
                        System.out.println("异常catch子句2");
                }
                               
                                catch(Exception e){//然后catch父类异常
                        System.out.println("异常catch子句1");
                }
        }

评分

参与人数 2黑马币 +12 收起 理由
陈丽莉 + 6
牛合超 + 6

查看全部评分

回复 使用道具 举报
试了,可行,,细节。。。。细节。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马