为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2018-07-13 08:54:09
其次,如果将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("错误类型:空引用!!!!");}}}
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

你的代码逻辑错了。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(); }

查看完整回答
反对 回复 2018-07-19
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

因为NullPointerException继承了Exception,所以能被NullPointerException捕获的异常肯定能被Exception捕获。
所以即使有空指针异常,肯定也是被Exception捕获,后面的catch语句就什么都捕获不到了。
解决办法:要么把catch(NullPointerException npe){}写在前面,要么直接去掉

查看完整回答
反对 回复 2018-07-19
  • 2 回答
  • 0 关注
  • 1769 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信