Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ExTestDrive.main(ExTestDrive.java:14):
程序代码如下:
1 class MyEx extends Exception{} 2 3 public class ExTestDrive { 4 5 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 String test=args[0]; 9 try{ 10 System.out.println("t"); 11 doRisky(test); 12 System.out.println("o"); //如果没有异常,才会执行下面这一句,如果捕获异常,下面这一句直接跳过去了。 13 }catch(MyEx e){ 14 System.out.print("a"); 15 16 }finally{ 17 System.out.println("w"); 18 19 } 20 System.out.println("s"); 21 22 } 23 24 static void doRisky(String t) throws MyEx { 25 26 System.out.println("h"); 27 if("yes".equals(t)){ //看来t中会存储main函数传送给它的两个值:yes or not.或许是控制台中传递的参数 28 throw new MyEx(); 29 30 } 31 System.out.print("r"); 32 // TODO Auto-generated method stub 33 34 } 35 36 }
1 你好,这个异常是初学者比较常见的异常。 2 ArrayIndexOutOfBoundsException:注意这个单词,字面意思就是数组引用超出界限,也就是我们常说的越界问题。 3 4 比如,我们创建了一个数组 int a[] = new int[4] ; 5 那么数组a只能存放四个元素,而数组的下标是从0开始的,也就是说,a[3]就是最后一个元素。当你给a[4]赋值,或者使用a[4]的时候,就出现了ArrayIndexOutOfBoundsException异常。
1 你的args[]定义的是String数组 只给args[]数组声明 没给它分配空间 所以运行后出现的错误的意思是下标越界,代码如下:、 2 public class b { 3 public static void main(String args[]){ 4 args=new String[3]; 5 System.out.println("hi!"+args[0]+" "+args[1]+" " +args[2]); 6 7 } 8 } 9 加args=new String[3];是个它分配空间你有args[0],args[1],args[2]三个所以是String[3],还可以给这数组赋值,如args[0]=new String("java")
添加了一句话:args=new String[3],为这个数组分配了空间。
1 class MyEx extends Exception{} 2 3 public class ExTestDrive { 4 5 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 args=new String[3]; 9 String test=args[0]; 10 try{ 11 System.out.print("t"); 12 doRisky(test); 13 System.out.print("o"); //如果没有异常,才会执行下面这一句,如果捕获异常,下面这一句直接跳过去了。 14 }catch(MyEx e){ 15 System.out.print("a"); 16 17 }finally{ 18 System.out.print("w"); 19 20 } 21 System.out.print("s"); 22 23 } 24 25 static void doRisky(String t) throws MyEx { 26 27 System.out.print("h"); 28 if("yes".equals(t)){ //看来t中会存储main函数传送给它的两个值:yes or not.或许是控制台中传递的参数 29 throw new MyEx(); 30 31 } 32 System.out.print("r"); 33 // TODO Auto-generated method stub 34 35 }
运行结果就出来了:
throws。
说明控制台Console发送过来的消息是no.就是没有抛出异常。