一个故障的排查经验分享
2023-03-03 本文已影响0人
山里阿辉
一段时间没写技术相关的文章,有个故障造成的影响不好,但很低级,想来想起还是分享给大家,用到这个函数时可以注意下。
两天前,接到实施人员报障,反馈有部分数据未匹配,在业务上无法展示。
收到故障的第一反应,内心就有疑惑,这个版本这个模块都近一年没调整了,怎么会有Bug,也没见其他项目上报过这个故障。
既然有报障,就得去分析,我们就根据现场的场景模拟做了业务,结果正常。结合故障期间的业务日志,也未发现异常,这下思路断了。
无法复现,那就最土的方法,拿现场的数据,现场的版本,搬到公司的环境来,令人惊喜的是故障复现,还是空指针,indexOf方法不支持空指针的入参,到这边就很清晰了,居然有空指针为啥日志没显示呢,我们又回到业务日志,发现报障的终端与服务器时间有时差。
定位到问题后,这个解决期间就很很简单了。
空指针这种异常,在日常是最容易忽略的,在编码时认为不可能会出现,所以在编码时不想多写那么一行判空的检验,等它出现时,投入去解决的时间精力远比加那一行代码来的代价大。
作为老程序员,经历过10来次这种空指针引发的故障,每次排查都花费很大的代价,反馈故障原因时都没脸写这种原因导致的故障,这是最低级的Bug,而且是最容易解决的Bug,很容易被鄙视。
我想说,请不要吝啬那么一行代码,空检验。