实习内容--后端HttpServletHolder引发的BUG

mentor一天直接甩给我一张日志error图,让我分析BUG,如下:
IMG20240623164534.png
一看NullPointter,感觉So easy开始了我的找bug之路

理清业务逻辑后,了解到sendMail发送邮件三次发送失败,maybe输入的邮件内容有点问题,这部分就不用考虑

三次发送失败后进入到了new Exception对象内部,一开始不理解为啥会出现在这里面

再往里面进,发现新建对象的时候从Holder内拿了request,了解到它想通过request的内容做国际化处理,
比如返回错误提示的时候返回中文的还是英文的需要再这里去获取请求内的内容,而获取这个内容需要getSession获取上下文内容

那么问题来了,虽然在requst.getSession之前判断了requst是否为空,但是在getSeesion内部需要getServletContext获取上下文,后面了解到这部分业务存在着定时任务,也就是定时发送邮件,这部分肯定不是一个Http请求,当然上下文是空的了

解决:

在request.getSessionde使用try cach捕获异常,如果出现了NullPointer那么就默认返回中文的错误信息


标题:实习内容--后端HttpServletHolder引发的BUG
作者:linrty
地址:https://blog.linrty.top/articles/2024/06/23/1719133331166.html

    评论
    0 评论
avatar

取消