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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小洋人最happy 中级黑马   /  2012-11-21 15:33  /  1226 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

catch (Exception e)  
                {
                       
                        System.out.println(e.toString());

                }

直接这样不是很简单吗?还需要挨着定义吗,比如下面
catch (ArithmeticException e)
                {
                        System.out.println(e.toString());
                        System.out.println("被零除啦");
                }       
               
                catch (ArrayIndexOutOfBoundsException e)
                {
                        System.out.println(e.toString());
                        System.out.println("角标越界啦");
                }       

这样会不会很麻烦呢

点评

杀鸡你会用牛刀吗 ?!  发表于 2012-11-21 15:54

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 淡定

查看全部评分

3 个回复

倒序浏览
他们两个捕获的异常是不一样的,ArithmeticException 是一般性错误,像你说的除数是0了,但是ArrayIndexOutOfBoundsException 是数组越界问题。
回复 使用道具 举报
2楼 +1
exception e处理的是一般异常,ArithmeticException 和ArrayIndexOutOfBoundsException 是exception的子类,功能不一样
另外你代码中的局部变量e要改一下,两个不能一样的,不然编译报错
回复 使用道具 举报
       catch (Exception e)  
      {
                        
               System.out.println(e.toString());

        }
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
        catch (ArithmeticException e)
        {
                   System.out.println(e.toString());
                   System.out.println("被零除啦");
                  // Log.e();
        }        
               
       catch (ArrayIndexOutOfBoundsException e)
       {
                    System.out.println(e.toString());
                    System.out.println("角标越界啦");
        }        
关于异常方面的知识这里就不说了,LZ查下资料就可以了解下,下面针对LZ的提问给个回答

lz的第一种抛出异常的方式比较广泛,如果真的出错的话,让别人调试起来很麻烦,其实在catch语句中专门为企业写代码的会在里面

以Log日志的形式保存到特定文件夹下的文档里,这样以后你的程序给别人用时,出错的话别人才好调试。

而第二种方式是最好的,因为抛出的异常很具体,如果真的出错,查看文档的话才会方便,才会具体到那个错

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马