1、字符串比较,常量放前面
if(status.equals(SUCCESS)){ }
这个时候 status 可能为 null 造成空指针异常,应该把常量放前面,就能避免空指针异常。
if(SUCCESS.equals(status)){ }
这个应该在各种开发规范里面都会提到,也是最基础的。
2、初始化默认值
在对象初始化的时候给它一个默认值或者默认构造实现,如:
User user = new User(); String name = StringUtils.EMPTY;
3、返回空集合
在返回一个集合的话,默认会是 null,统一规范返回一个空集合。
举个 List 例子,如:
public List getUserList(){ List list = userMapper.gerUserList(); return list == null ? new ArrayList() : list; }
这样接收方就不用担心空指针异常了,也不会影响业务。
4、断言
断言是用来检查程序的安全性的,在使用之前进行检查条件,如果不符合条件就报异常,符合就继续。
Java 中自带的断言关键字:assert,如:
assert name == null : "名称不能为空";
输出:
Exception in thread "main" java.lang.AssertionError: 名称不正确
不过默认是不启动断言检查的,需要要带上 JVM 参数:-enableassertions 才能生效。
Java 中这个用的很少,建议使用 Spring 中的,更强大,更方便好用。
Spring中的用法:
Assert.notNull(name,"名称不能为空");
5、Optional
Optional 是 JDK 8 新增的新特性,再也不用 != null 来判断了,这个在一个对象里面的多个子对象连续判断的时候非常有用。
https://www.itwanger.com/life/2020/03/10/java-Optional.html
6、log日志
log日志时,变量可能出现为空的情况,一定要避免使用变量.toString()等一系列的方法,否则可能会出现空指针异常!如果有必要调用方法,就必须做好判空条件!
错误使用案例
log.info("applicationIds:{}",applicationIds.toString());
log.info("员工:{} 所属应用Id集合:{} 集合Size:{}", account,applicationIds,applicationIds.size());
正确使用案例
log.info("applicationIds:{}",applicationIds);
if(applicationIds!=null){
log.info("所属应用Id集合:{} 集合Size:{}",applicationIds,applicationIds.size());
文章来源:https://www.toymoban.com/news/detail-437774.html
}
文章来源地址https://www.toymoban.com/news/detail-437774.html
到了这里,关于开发过程中空指针异常如何规避?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!