日期:2014-05-20  浏览次数:20925 次

java数组越界不报异常
本机系统 win7 32位旗舰版 ;jdk版本1.6.0;编写如下程序
class divdemo
{
int div(int a,int b) throws Exception
  {  
int[] ary=new int[3];
System.out.println(ary[a]);
return a/b;
}
}
class demo8 
{
public static void main(String[] args) 
{


  divdemo d=new divdemo();
try{
int x=d.div(5,1);
  System.out.println();
}
catch(Exception e){
System.out.println(e.getMessage());
}

System.out.println("Hello World!");
}
}
很明显程序执行到调用divdemo类的方法div时,出现了数组越界,可java不报越界异常,求解释

------解决方案--------------------
谁说不抛异常的?
catch(Exception e){
System.out.println(e.getMessage());
}
改成
catch (Exception e) {
e.printStackTrace();
}
------解决方案--------------------
加上e.printStackTrace();
java.lang.ArrayIndexOutOfBoundsException: 5
5
Hello World!
at divdemo.div(Demo8.java:6)
at Demo8.main(Demo8.java:18)

getMessage() 的值是5
下次注意 e.getClass().getName();也要写
------解决方案--------------------
探讨

楼主,你的程序有数组越界异常,只是被你的catch捕获并打印出异常的ID,而没有显示异常的详细信息。

请将e.getMessage()改成e.toString()就可以看到:java.lang.ArrayIndexOutOfBoundsException: 5,表明产生了数组越界异常,异常代号为5