刚才写修改密码这块接口的时候, 明明我是严格按照他的接口文档写的代码, 为什么还是报错?
错误debug出来是个空指针异常, 传说中的十亿美元错误......
先上结论:
接口文档上body携带了三个参数, 但是后端接收到的参数没有id, 我又用id去查找数据库, 造成了结果为null
后端代码
controller:
Service
ServiceImpl
Mapper
我这里是将设置员工账号启用禁用状态, 更新员工信息, 更新密码三个逻辑写在了一个mapper中, 在传参的时候统一发Employee对象
吐槽
我一开始特纳闷, 以为是请求路径接收错了, 一顿找啊!
然后对了几遍发现没问题, debug了一下发现到这块(service)就停了, (我还没有定位到是if条件出现了空指针, 以为是抛出的异常导致的问题),
于是我就去定义了全局异常处理器来接收处理这个异常
发现没用啊, 我又去给每一层都打了密密麻麻的断点来过, 让我逮着了个空指针, 大脑宕机.....
修改方案就是用ThreadLocal来手动装填一个id进来, 一切就都好用了(BaseContext用的单例模式封装了ThreadLocal)
接口文档一定要严谨!严谨!