java代码如何防止空指针异常(NullPointerException)的出现

空指针异常(Null Pointer Exception)是我们平时最容易碰到的,也是最令人讨厌的异常。本文介绍如何避免出现空指针异常。

首先你要知道空指针异常为什么会出现:

引用直接指向空对象,大概率是你没有取到某个对象;

接下来看怎么防止异常:

1. 前台提交数据到后台时很可能出现意外取不到数据

(1)使用equals判断时:

String password = null;
password = request.getParameter("password");

"123456".equals(password);
/*
因为"123456"永远不可能为空,这样就不会出现空指针的异常了
但是你想调试时最好先不要这样,负责你可能不知道你没取到数据。
*/

(2)使用“==”判断长度时:

/*
引用判等null时,最好放在前面,因为 “||” 是短路或
(只要当前项为真,它也不往后判断了,直接认为表达式为真)
这样的话后面就会不会出现空指针异常了
*/
if(password == null || password.length()<6){
    System.out.println("密码强度不都够!");
}

2. 对于别人接口的返回对象要做非空判断,因为我们不清楚获得的对象会不会为空,对于Collection Map 我一般会调用CollectionUtils MapUtils ,对于返回的String对象,我会调StringUtils.isNotEmpty()进行非空判断。他们中isNotEmpty不仅判断了NULL 还判断了空集合和空串。例如从数据中查询的结果。工作流中返回的定价URL。
if (StringUtils.isNotEmpty(dialectClazz)) {
            try {
                Class<?> clazz = Class.forName(dialectClazz);
                if (IDialect.class.isAssignableFrom(clazz)) {
                    dialect = (IDialect) clazz.newInstance();
                }
            } catch (ClassNotFoundException e) {
                throw new MybatisPlusException("Class :" + dialectClazz + " is not found");
            }
        }
3. 对于String 的操作尽量使用apache 的StringUtils类,与String相比这个是非常的安全。对于集合的操作使用apache的CollectionUtils 、MapUtils, 相比apache工具类的执行效率也非常的高,比如StringUtils.split();有人说过多的判断会影响性能,我个人认为这里的性能牺牲和系统的安全相比是微不足道的。
4. 对于自己创建的对象,要留心对象进行哪些操作,中间会不会造成对象为空,如果可能加非空判断,尤其是对于集合的操作,很容易就报空指针!!!所以每次对操作集合时,我都会非常的留心。

转载自1: http://www.qiyadeng.com/
转载自2: https://blog.csdn.net/wangkejie2314/article/details/52149225

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页