常见的空指针异常有哪些?

Posted leifongta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见的空指针异常有哪些?相关的知识,希望对你有一定的参考价值。

定义:NullPointerException由RuntimeException派生出来,是一个运行级别的异常。意思是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的业务逻辑中断。
发生原因:
1.空指针异常发生在对象为空,但是引用这个对象的方法以及自动装箱自动拆箱的时候。
  例如: String s = null; //对象s为空(null) int length = s.length();//发生空指针异常  
2.一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以生命一个变量时最好给它分配好内存空间,给予赋值。  
3.比如变量为空,而你没有去判断,就直接使用,就会出现NullPointException。写程序时严谨些,尽量避免了,例如在拿该变量与一个值比较时,要么先做好该异常的处理
  如: if (str == null) {   System.out.println("字符为空!"); }
  当然也可以将这个值写在前面进行比较的,例如,判断一个String的实例s是否等于“a”,不要写成s.equals("a"),这样写当s为空的时候容易抛出NullPointerException,而写成"a".equals(s)就可以避免这个问题。不过对变量先进行判空后再进行操作比较好  
4.尽量避免返回null,方法的返回值不要定义成为一般的类型,而是用数组。
  如果list想要返回null的时候,就返回一个没有元素的数组,然后再对list.size()==0进行判断。就能避免许多不必要的NullPointerException,使用NullObject返回代替返回null确是一种不错的选择。注意,NullObject是特殊的null对像象
5.当valueOf()和toString()返回相同的结果时,宁愿使用前者。
  因为调用null对象的toString()会抛出空指针异常,如果我们能够使用valueOf()获得相同的值,那宁愿使用valueOf(),传递一个null给valueOf()将会返回“null”,尤其是在那些包装类,像Integer、Float、Double和BigDecimal。

 

推荐养成习惯:

1.习惯使用StringUtils,它的方法是空指针安全的,他们不会抛出空指针异常

2.逢对象多考虑一步

3.多使用第三方库,使用spring framework 自带的方法注解及lombk,但也要看清他们的方法执行的原理
 

以上是关于常见的空指针异常有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

NULL空指针常见情况(修复和定位)

NULL空指针常见情况(修复和定位)

启动 IntentService 的空指针异常

Mockito:: MockMVC 的空指针异常

在检查空值时 onPostExecute 中的 AsyncTask 中的空指针异常

如何解决spring boot test中的空指针异常?