你是想要问什么?你这个程序执行结果都是对的,
对于: int[] a =new int[4];运行结果就是下面的三行
整型数组创建完毕
整型数组中的第四个元素的值为9
这里是finally快,无论是否抛出异常,这里总能执行
对于:int[] a = null;这个结果的打印也是对的,你创建了一个数组在栈内存中,但是没有指向,赋值为null就表示没有在堆内存中分配空间,因为你写了空指针的异常处理,所以在运行到a[3]=9时,就去执行你写的异常处理去了,finally语句块中的语句不管什么情况都会执行的
对于:int[] a =new int[2];你创建的这个数组可以装下三个元素,下标从0到2,但是你却要使用下标是3的这个空间,你在异常块中没有捕获下标越界异常,当然在执行时,会抛出异常了,如果你加上下标越界异常的处理,那么系统就不会出现那些英文提示了,效果就和你上面的一样了,如下:
public static void main(String args[]){
//
try{
//
int[] a =new int[2];
System.out.println("整型数组创建完毕");
//
a[3]=9;
System.out.println("整型数组中的第四个元素的值为"+a[3]);
}//
catch(NullPointerException npe){
//
System.out.println("这里出现的错误类型是:空引用");
}
catch(ArrayIndexOutOfBoundsException pe){
//
System.out.println("这里出现的错误类型是:下标越界");
}
//
finally{
//
System.out.println("这里是finally快,无论是否抛出异常,这里总能执行");
}
} |