java.lang.NullPointerException 空指针异常:最讨厌的报错,没有之一

空指针的解决办法:

 重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。  

在Java中一般报空指针异常的原因有以下几种: 

1、字符串变量未初始化; 

2、接口类型的对象没有用具体的类初始化,比如: 

List lt;会报错 

List lt = new ArrayList();则不会报错了 

3、当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码: if(rb!=null && rb!="") 

改成: 

if(rb==null); 

if(rb!==null&&rb!="") 或者if((“”).equals(rb)) 

 

如何避免:

1.字符串与文字的比较
应用程序执行代码中的一个非常常见的情况涉及字符串变量和文字之间的比较。文字可以是一个字符串或Enum的元素。不要从空对象调用方法,而应考虑从文字中调用它。

2.检查方法的参数
在执行你自己的方法的主体之前,一定要检查它的参数为空值。只有在正确检查了参数后,才继续执行该方法。否则,您可以抛出一个IllegalArgumentException并通知调用方法传递的参数有问题。

3.优先使用String.valueOf()方法代替toString()
当您的应用程序代码需要对象的字符串表示形式时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出a。

相反,考虑使用静态String.valueOf方法,该方法不会抛出任何异常并打印"null",以防函数的参数等于null。

4.使用三元运算符
该ternary操作是非常有用的,可以帮助我们避免了NullPointerException。

5.创建返回空集合而不是null的方法
一个非常好的技术是创建返回一个空集合的方法,而不是一个null值。你的应用程序的代码可以遍历空集合并使用它的方法和字段,而不会抛出一个NullPointerException

6.使用Apache的StringUtils类
Apache的Commons Lang是一个为java.langAPI 提供帮助工具的库,比如字符串操作方法。提供字符串操作的示例类是StringUtils.java,它null静静地处理输入字符串。

7.使用contains(),containsKey(),containsValue()方法
如果您的应用程序代码使用集合,例如Maps考虑使用包含containsKey和containsValue方法。

8.检查外部方法的返回值
在实践中使用外部库是很常见的。这些库包含返回引用的方法。确保返回的参考不是null。另外,请考虑阅读该方法的Javadoc,以便更好地理解其功能和返回值。

 

你可能感兴趣的:(日常,日常BUG,经验分享)