描述

今天在做那个音乐APP项目的时候,到了展示我的好友列表这个阶段。

前面测试的数据都正常显示:image-20230517151725879

image-20230517151843942

但是换上真实数据直接NPE了:

image-20230517152038858

image-20230517151148844

image-20230517151753030

然后下面的【我的粉丝】又是正常的。image-20230517152201185

分析

1
2
3
4
5
6
Process: com.ixuea.courses.mymusic, PID: 2952
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at com.ixuea.courses.mymusic.util.DataUtil.processUserPinyin(DataUtil.java:163)
at com.ixuea.courses.mymusic.component.user.activity.UserActivity$2.onSucceeded(UserActivity.java:134)
at com.ixuea.courses.mymusic.component.user.activity.UserActivity$2.onSucceeded(UserActivity.java:121)
at com.ixuea.courses.mymusic.component.api.HttpObserver.onNext(HttpObserver.java:109)

注意:上面不是原始日志。

发现是空指针异常,我依次在每个提示的地方用Log打印日志:找null具体点。

image-20230517152737106

image-20230517153126551

发现这个日志bug3_2前几个还不是null,突然就出来一个null。

然后知道是User类里面的getNickname方法。

跳进去看了下。

搜得寺内

我觉得是后端API的问题,然后看了下手机上的那个日志小插件:

Screenshot_2023-05-17-15-34-34-225_com.ixuea.cour

发现最后一组元素没有nickname这个值。

实现

image-20230517153303013

然后我直接把那个getNikeName换个实现方式。

如果有值就直接用,没有值就是“无名氏”。Screenshot_2023-05-17-15-36-47-740_com.ixuea.cour

果真是一个无名氏。

总结

  1. 后端的API自己写更省心
  2. 有时候bug不是自己的问题,可能是后端的锅。