Comparator排序空指针问题

背景

项目是监控告警平台,会对多个系统进行监控,在某一系统存在下拉框子系统,通过选择不同子系统来查询不同的值班人员信息,告警情况等指标信息。每个子系统切换时都会正常出现告警指标,唯独有一个系统,点击后告警信息还有其他告警指标都有查询成功,唯独值班人员信息无法获取到,通过日志发现只提示个null,不得不吐槽下,上任写代码的同事,使用的e.getMessage(),使得详细异常没有完全输出,对于bug排查带来很多坑,又给更改了下日志输出…
在这里插入图片描述

分析

将日志明细打印输出后,发现了空指针问题所在:
在这里插入图片描述
排查思路:
1.报错信息是Comparator.comparing出现了空,且代码中是使用的getInteger,因而猜测是json串中,可能存在sort:0的情况。
2.有可能是代码没有考虑所有情况,sort允许为0,没有做到全面覆盖。

修复

方法一:将getInteger方法改为getString,然后再去使用Integer.ValueOf去获取对应的值。
方法二:使用Comparator.nullsLast(String::compareTo),来对空值进行处理。

实践

方法一:
使用getString的时候对于0还是会转成null,因此方法失效,不能使用。

方法二:调整为如下代码:
在这里插入图片描述
经验证,问题解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值