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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姿_`态 高级黑马   /  2014-6-17 12:01  /  1354 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 姿_`态 于 2014-6-17 18:16 编辑

class ExceptionDemo1
{
        public static void main(String[] args)// throws Exception
        {
                Demo d =new Demo();
                try
                {
                        
                        int i=d.div(4,1);
                        System.out.println(i);
                }
                catch (Exception e)
                {
                        //e.printStackTrace();
                        //System.out.println(e.toString());
                        System.out.println(e.getMessage());

                }
                System.out.println("over");
               
        }
}
class Demo
{
        int div(int a,int b)throws Exception
        {
         int[] arr = new int[a];
        
         System.out.println(arr[10]);
      return a/b;
        }
}
为什么输出时  :
10
over


评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

15 个回复

倒序浏览
div执行的时候异常,然后跳到catch里面告诉你角标10的元素越界,cath处理之后 接续执行 syso("over")。
回复 使用道具 举报 1 0
a6217815 发表于 2014-6-17 13:04
div执行的时候异常,然后跳到catch里面告诉你角标10的元素越界,cath处理之后 接续执行 syso("over")。 ...

为什么会输出10,还有难道,数组角标越界异常,java没有封装?怎么不报错
回复 使用道具 举报
本帖最后由 2528870651 于 2014-6-17 16:22 编辑

哥们,你的程序其实已经抛出异常了,只是你的异常信息就是“10”,e.getMessage()的结果就是10,所以你才会误以为没有抛出异常。
你看看我的代码:
  1. class ExceptionDemo1
  2. {
  3.         public static void main(String[] args)// throws Exception
  4.         {
  5.                 Demo d =new Demo();
  6.                 try
  7.                 {
  8.                         
  9.                         int i=d.div(4,1);
  10.                         System.out.println(i);
  11.                 }
  12.                 catch (Exception e)
  13.                 {
  14.                         //e.printStackTrace();
  15.                         //System.out.println(e.toString());
  16.                         //System.out.println(e.getMessage().toString());
  17.                         e.printStackTrace();

  18.                 }
  19.                 System.out.println("over");
  20.                
  21.         }
  22. }
  23. class Demo
  24. {
  25.         int div(int a,int b)throws Exception
  26.         {
  27.          int[] arr = new int[a];
  28.         
  29.          //System.out.println("999");
  30.          System.out.println(arr[10]);
  31.       return a/b;
  32.         }
  33. }
复制代码


这是结果:
java.lang.ArrayIndexOutOfBoundsException: 10
        at Demo.div(ExceptionDemo1.java:31)
        at ExceptionDemo1.main(ExceptionDemo1.java:9)
over

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
2528870651 发表于 2014-6-17 16:20
哥们,你的程序其实已经抛出异常了,只是你的异常信息就是“10”,e.getMessage()的结果就是10,所以你才会 ...

还真是的,不过这异常信息直接就来一个10,也太逗了。谢谢哥们
回复 使用道具 举报
姿_`态 发表于 2014-6-17 18:16
还真是的,不过这异常信息直接就来一个10,也太逗了。谢谢哥们

没事。。
回复 使用道具 举报

哥们 你这技术分都这么高了 ,怎么不去培训
回复 使用道具 举报
姿_`态 发表于 2014-6-17 18:18
哥们 你这技术分都这么高了 ,怎么不去培训

因为我是大四的,这学期一边在搞毕业设计一边学习java,可是最近一个多月没有看了,前几天毕业答辩完了。
然后,我第二天就开始复习,可是悲剧的发现忘了好多。。。。
今天又在复习集合了。
回复 使用道具 举报
2528870651 发表于 2014-6-17 18:21
因为我是大四的,这学期一边在搞毕业设计一边学习java,可是最近一个多月没有看了,前几天毕业答辩完了。 ...

好吧 ,确实挺苦逼的,祝哥们早日进入黑马
回复 使用道具 举报
我报的39期,现在在写博客,因为毕业设计以后我电脑就重装系统了,然后磁盘格式化了,里面的笔记什么的全没了,现在只能一边复习一边写了(本来打算把笔记直接当博客使的)。
回复 使用道具 举报
姿_`态 发表于 2014-6-17 18:23
好吧 ,确实挺苦逼的,祝哥们早日进入黑马

嗯,你报的哪期啊??
回复 使用道具 举报
2528870651 发表于 2014-6-17 18:24
嗯,你报的哪期啊??

我大二  :'(  ,还早着呐
回复 使用道具 举报
姿_`态 发表于 2014-6-17 18:26
我大二    ,还早着呐

嗯,大二好啊 ,加油!!
回复 使用道具 举报
2528870651 发表于 2014-6-17 18:27
嗯,大二好啊 ,加油!!

恩恩,加油加油
回复 使用道具 举报
姿_`态 发表于 2014-6-17 14:16
为什么会输出10,还有难道,数组角标越界异常,java没有封装?怎么不报错 ...

你的e.getMessage就是告诉你 角标10越界了,如果是输出e,才会报角标越界异常
回复 使用道具 举报
a6217815 发表于 2014-6-17 21:28
你的e.getMessage就是告诉你 角标10越界了,如果是输出e,才会报角标越界异常 ...

谢谢啦啊 ,明白啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马