• java记录一次调用方法出现的NullPointerException


    前言

    有次调用java api,报错

    Caused by: java.lang.NullPointerException: null
    	at com.winning.dataassets.system.util.AppSystemMenuHelper.lambda$systemAddMultiMenu$0(AppSystemMenuHelper.java:54)
    	at java.util.ArrayList.forEach(ArrayList.java:1257)                                                                                

    第一眼一看,很简单呗,不就是个空指针异常吗

    再仔细排查,咦,很奇怪,没有对象是空的的啊,我只不过调取了另一个方法而已,怎么就报空指针异常了呢

    排查

    初级程序员的排查:

    1.可能是lambda的原因,因为这个异常不是有个lambda的异常信息在吗。

    2.可能是lombok的原因,最近一直看lombok会出现各种各样的问题,不建议使用。

    3.可能是spring注解@Component的影响。

    后来发现,方法体留空,还是没进入方法内,再排查,入参有个null,难道会是这个,但是之前调取JPA方法入参传递null就没关系,试着修改这个null为固定一个值,可以了。

    再仔细排查,原来是因为包装型和基本型的区别,原因如下

    第一个方法入参:

    public List<AppSystemMenuEntity> systemAddMultiMenu(Long appSystemId,  Long parentMenuId, long appMenuId) {     
    getAppSystemMenuEntity(appSystemId,parentMenuId,appMenuId);
    }

    第二个方法入参:

        private AppSystemMenuEntity getAppSystemMenuEntity(long appSystemId, long parentMenuId, long appMenuId) {
    
        }  

    因为第一个方法入参是Long类型,包装型类型允许null和数字,但是基本型long不允许null,

    进入第一个方法时不报错,但是第二个方法不允许null,是所以就报了空指针异常。

    看来还是基础知识太差了,要好好学习,天天向上,stay hungry, stay foolish.

    Ride the wave as long as it will take you.
  • 相关阅读:
    Android(java)学习笔记197:ContentProvider使用之内容观察者02
    数据库连接池--druid
    在java中导出excel
    对excel进行封装
    创建excel,合并单元格,设置单元格样式
    认识Excel并创建一个excel(网址:http://poi.apache.org/)
    认识单元测试(jar包资源网址:http://search.maven.org/)
    Echarts在java中使用
    认识Echarts(网址:http://echarts.baidu.com/tutorial.html#ECharts%20%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D)
    制作缩略图
  • 原文地址:https://www.cnblogs.com/jianpanaq/p/12322947.html
Copyright © 2020-2023  润新知