NullPointerException原因及解决办法

为什么会产生空指针异常,我们先来看一下JDK1.6的API

NullPointerException (Java Platform SE 6)
public class NullPointerException extends RuntimeExceptionnull

   当应用程序试图在需要对象的地方使用时,抛出该异常。这种情况包括:

    * 调用 null 对象的实例方法。
    * 访问或修改 null 对象的字段。
    * 将 null 作为一个数组,获得其长度。
    * 将 null 作为一个数组,访问或修改其时间片。
    * 将 null 作为 Throwable 值抛出。

应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。



由以上说明可以看出,最主要的原因就是调用的对象是NULL

经常会出现空指针的情况有


   (1)字符比较
    String str1 = someclass.getSomeString();
    if(str1.equalsIgnoreCase("YES"))
    {
      //do something
    }
    else if(str1.equalsIgnoreCase("NO"))
    {
     //do something else
    }
    (2)读取配置文件
       props.getProperty("somekey");
    (3)从MAP取值
        map.get("key");
    (4)从Session取值
        String userName = request.getSession().getAttribute("userName");

    等等,这里发生NullPointerException的机会非常大,而且运行情况往往和用户输入的数据有关,所以不容易被发现.
      如何避免空指针异常?最主要的是养成一个好的编码习惯,在对对象进行调用方法、比较等等操作时,要判断一下对象有没有可能会是NULL,提前进行处理。
      尤其要注意的是字符比较的时候:为避免出现NullPointerException,不要这么写:str1.equalsIgnoreCase("YES");而应该写成这样:"YES".equalsIgnoreCase(str1),这样就可以避免空指针异常。
    至于这两种写法的差异,主要是程序对对象的操作是先判断再执行,就是先判断对象是否存在,然后再去执行其它操作。第一种方式在判断str1的时候,如果str1是null,这是程序肯定会抛出异常,而第二种就OK,不会报异常。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值