黑马程序员技术交流社区
标题:
异常处理
[打印本页]
作者:
曾翰翰
时间:
2012-11-25 12:58
标题:
异常处理
class Sample13 {
public static void main(String args[]){
//
try{
//
int[] a =new int[4];
System.out.println("整型数组创建完毕");
//
a[3]=9;
System.out.println("整型数组中的第四个元素的值为"+a[3]);
}//
catch(
NullPointerException npe
){
//
System.out.println("这里出现的错误类型是:空引用");
}
//
finally{
//
System.out.println("这里是finally快,无论是否抛出异常,这里总能执行");
}
}
}
整型数组创建完毕
整型数组中的第四个元素的值为9
这里是finally快,无论是否抛出异常,这里总能执行
int[] a = null;
整型数组创建完毕
这里出现的错误类型是:空引用
这里是finally快,无论是否抛出异常,这里总能执行
int[] a =new int[2];
整型数组创建完毕
这里是finally快,无论是否抛出异常,这里总能执行
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at day20.Sample13.main(Sample13.java:13)
作者:
赵红萍
时间:
2012-11-25 13:27
你是想要问什么?你这个程序执行结果都是对的,
对于: 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快,无论是否抛出异常,这里总能执行");
}
}
作者:
罗忠文
时间:
2012-11-25 13:30
cath为了抛出异常或是捕获异常,发生异常是带不会再往下执行,而finally是为了在发生异常是继续执行finally{代码块}代码块种的代码,ffinally是为关闭一些打开的资源,如数据库资源等
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2