java错误: 已捕获到异常错误NullPointerException

其次,如果将try里面的语句改为int[] a=null;,为什么还是没有正常输出“错误类型:空引用!!!!”语句????
public class Sample6_7{
public static void main(String []args){
try{

int[] a=new int[3];
a[2]=1;
}
catch(Exception e){
e.printStackTrace();
}
catch(NullPointerException npe){
System.out.println("错误类型:空引用!!!!");
}
}
}https://img1.mukewang.com/5b5036c90001449105240097.jpg

森林海
浏览 1861回答 2
2回答

子衿沉夜

你的代码逻辑错了。NullPointerException是Exception的子类。捕获异常的范围应该从小到大,你这样捕获的话,直接走第一个Exception。所以是不会被NullPointerException捕获到的。try{         int[] a=new int[3];         a[2]=1; } catch(NullPointerException e){         System.out.println("错误类型:空引用!!!!");         e.printStackTrace(); }catch(Exception e){     e.printStackTrace(); }

蝴蝶刀刀

因为NullPointerException继承了Exception,所以能被NullPointerException捕获的异常肯定能被Exception捕获。所以即使有空指针异常,肯定也是被Exception捕获,后面的catch语句就什么都捕获不到了。解决办法:要么把catch(NullPointerException npe){}写在前面,要么直接去掉
打开App,查看更多内容
随时随地看视频慕课网APP