java.lang.NullPointerException常见原因及解决办法

简介: 首先NullPointerException是RuntimeException的一个子类,这是运行时,在编译时期不会触发,所以这是最最最容易出现的线上bug;

首先NullPointerException是RuntimeException的一个子类,这是运行时,在编译时期不会触发,所以这是最最最容易出现的线上bug;

20210122111039181.jpg

容易出现空指针异常的场景

在调用对象方法时

比如处理字符串常用的replace方法,数组的length方法,map的size方法等等;

str.replace(…)

如果str为null,这里就直接空指针了

判断一个str是否等于"test",你直接str.equals(“test”)

还有像map.forEach()、list.stream() 、object.equals()、str.toString()…

类似的还有很多,太多了


在判断对象是否为空时


这个是最坑的,导致空指针的原因就是在调用对象方法时没有对对象判空,但是有些小伙伴往往就是在这个环节出问题,明明对象判空的目的就是避免空指针,好家伙,到头来这成了罪魁祸首

比如你在调用str.replace(…)时,意识到这里应该对str做判断,不为空才调用replace方法

于是你开开心心一脸自信

if(!str.isEmpty()){

str.replace(…)

}

或者

if(str.length()>0){

str.replace(…)

}

这么一套操作下来以为自己的代码天衣无缝,这破公司已经容不下我了

万万没想到从一个坑掉进了另一个坑

str.isEmpty()、str.length()自身也会造成空指针

嘤嘤嘤~~~


对象判空技巧


我就直接给出几个常用的

StringUtils.isNotBlank(str)

StringUtils.isNotEmpty(str)

object != null

太多了,这里不一一列举


总结和技巧


在调用对象方法前先判断对象是否为空(不管是实体、变量、常量、map、list还是其他什么)

在判断对象是否为空时注意不要直接调用判空方法,判空方法特么也是方法

尽量不要用str.toString(),改用String.valueOf()

比如你要判断一个str是否等于"test",你不要str.equals(“test”),可以反过来"test".equals(str)


避免空指针远不止上面这些方法,更多的还需要自己总结经验。


相关文章
|
3月前
|
网络协议 Java 编译器
Java常见异常及对应解决办法
Java常见异常及对应解决办法
50 10
|
4月前
|
Java
关于idea报错:Cannot determine path to 'tools.jar' library for 17 (E:\java-jdk\jdk17)的解决办法
关于idea报错:Cannot determine path to 'tools.jar' library for 17 (E:\java-jdk\jdk17)的解决办法
|
6月前
|
Java
IDEA Error:java: Compilation failed: internal java compiler error 解决办法
IDEA Error:java: Compilation failed: internal java compiler error 解决办法
168 0
|
6月前
|
Java Spring
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 报错的解决办法
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 报错的解决办法
309 0
|
6月前
|
缓存 Java 开发工具
Error:java: Compilation failed: internal java compiler error 解决办法
Error:java: Compilation failed: internal java compiler error 解决办法
65 0
|
6月前
|
存储 安全 前端开发
Java中的String类与StringBuilder、StringBuffer的比较:缺点与解决办法
Java中的String类与StringBuilder、StringBuffer的比较:缺点与解决办法
87 0
|
6月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
|
6月前
|
缓存 架构师 算法
Java内存溢出如何解决,Java oom排查方法,10个定位解决办法
在Java开发过程中,有效的内存管理是保证应用程序稳定性和性能的关键。不正确的内存使用可能导致内存泄露甚至是致命的OutOfMemoryError(OOM)。
139 0
|
Java Spring
【Java异常】idea 报错:无效的目标发行版:17 的解决办法
【Java异常】idea 报错:无效的目标发行版:17 的解决办法
1882 0
|
Oracle 关系型数据库 Java
java处理oracle的Clob字段类型的坑和2种解决办法
java处理oracle的Clob字段类型的坑和2种解决办法