servlet的getparameter为什么出现空指针异常_教你避免空指针6个方式!

df770bde70518e23bd8cb4cb4d1793fc.png

一.什么是java空指针异常

我们都知道java是没有指针的,这里说的"java指针"指的就是java的引用,我们不在这里讨论叫指针究竟合不合适,而只是针对这个异常本身进行分析。空指针就是空引用,java空指针异常就是引用本身为空,却调用了方法,这个时候就会出现空指针异常。可以理解,成员变量和方法是属于对象的(除去静态),在对象中才存在相对应的成员变量和方法,然后通过对象去调用这些成员变量和方法。对于空指针来说,它不指向任何对象,也就没有所谓的成员变量和方法,这个时候用它去调用某些属性和方法,当然会出现空指针异常。

如下面示例会发生空指针异常:

Object object = null;String objStr = object.toString();
c8842b465b314293813dd2b4a3828968.png

从类结构图来看,空指针它是属于运行时异常 RuntimeException 的子类,它不是捕获型的,只有在程序运行时才可能报出来,而且会造成程序中断。

避免空指针

1. 比较字符串时,模板在前,如:

 String str = null; if("test".equals(str)){ //do something }

2.使用String.valueOf()而不是toString()

Object obj = null;String test = String.valueOf(obj);

3.初始化默认值

import org.apache.commons.lang3.StringUtils;SysUsers sys = new SysUsers();String demo = StringUtils.EMPTY;

4.集合相关判断

  • 举个 Map 例子

合理使用contains(),containsKey,containsValue等方法,如:

Map map = new HashMap();map.containsKey("test");map.containsValue("test");

在返回一个集合的话,默认会是 null,统一规范返回一个空集合。

  • 举个 List 例子,如:
public List getUserList(){ List list = userMapper.gerUserList(); return list == null ? new ArrayList() : list;}

这样接收方就不用担心空指针异常了,也不会影响业务。

5.使用Assertions(断言),如:

Object obj = null;assert obj != null;String test = obj.toString();

此时如果str为空,那么则抛出java.lang.AssertionError异常而不是空指针异常

6、Optional

Optional 是 JDK 8 新增的新特性,再也不用 != null 来判断了,这个在一个对象里面的多个子对象连续判断的时候非常有用。

感兴趣可查看optional相关资料

https://blog.csdn.net/zknxx/article/details/78586799

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值