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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Demo
  2. {
  3.         int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException//在功能上通过throws关键字声明了该功能可能会出现的异常
  4.         {
  5.                 int[] arr = new int[a];

  6.                 System.out.println(arr[4]);

  7.                 return a/b;
  8.                
  9.         }
  10. }

  11. class  ExceptionDemo2
  12. {
  13.         public static void main(String[] args) //throws Exception
  14.         {
  15.                 Demo d = new Demo();
  16.                 try
  17.                 {
  18.                         int x = d.div(4,0);
  19.                         System.out.println("x="+x);
  20.                 }
  21.                
  22.                
  23.                 catch (ArithmeticException e)
  24.                 {
  25.                         System.out.println(e.toString());
  26.                         System.out.println("被零除了!!");

  27.                 }
  28.                 catch (ArrayIndexOutOfBoundsException e)
  29.                 {
  30.                         System.out.println(e.toString());
  31.                         System.out.println("角标越界啦!!");
  32.                 }
  33.                
  34.                 /**/
  35.                 catch(Exception e)
  36.                 {
  37.                         System.out.println("hahah:"+e.toString());
  38.                 }

  39.                 System.out.println("over");

  40.         }
  41. }
复制代码




明明是有除零了跟角标越界的,总是只能提示一条

5 个回复

倒序浏览
   抛角标越界异常时,后面的代码就不执行了。 catch也就只捕捉到了ArrayIndexOutOfBoundsException.
回复 使用道具 举报
xpaibeyond 发表于 2014-9-8 15:46
抛角标越界异常时,后面的代码就不执行了。 catch也就只捕捉到了ArrayIndexOutOfBoundsException. ...

那就是说不可能同时报出两个异常咯
回复 使用道具 举报
当程序运行到System.out.println(arr[4])时,会抛出数组越界异常,这时候就直接将异常返回给调用者,即main函数,div方法里后面的代码就不执行了
回复 使用道具 举报
闪亮未来 发表于 2014-9-8 22:09
那就是说不可能同时报出两个异常咯

   在catch或finally里再try catch一次。
比如:
  catch (ArrayIndexOutOfBoundsException e)
                   {               
                           System.out.println(e.toString());
                           System.out.println("角标越界啦!!");
                           try{
                                 int x=5/0;
                           }catch(ArithmeticException a){
                                   System.out.println(a.toString());
                                    System.out.println("被零除了!!");
                           }
                           
                   }
回复 使用道具 举报
根据java的异常机制,try、catch、finaly中catch可有多个,执行过程是自上而下去匹配异常的,如果前一个异常匹配到了,则不会进入后面的异常,之后直接执行finaly。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马