springmvc的异常处理器不能捕获mysql异常吗?

发布于 2022-09-06 23:36:47 字数 1002 浏览 14 评论 0

利用springmvc自带的异常处理机制, 自定义了一个异常处理类. 经测试:

  1. 1/0抛的RuntimeException能够被捕获到.
  2. 自定义异常类, 然后手动抛的, 也能够捕获到.
  3. 但是mysql异常并没有走到异常处理类中.(如com.mysql.jdbc.exceptions.jdbc4.CommunicationsException)

异常处理类:

@ControllerAdvice
public class CustomerExceptionResolver  implements HandlerExceptionResolver {
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) {
        e.printStackTrace();
        //将异常输出到日志
        log.error("异常:",e);
        ....

service方法:

public ResponseResult selectByName4Smart(String name) throws CustomException {
        //调用mapper的查询方法
        //由于连不上mysql服务, 这里会报异常
        //期望的是他能够被异常处理类捕获
        List<String> certNos = customerMapper.selectCertNosLikeName(name);
        ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一生独一 2022-09-13 23:36:47

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException这个异常没试过,它的间接父类java.sql.SQLException,我试了一下是可以捕获的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文