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

利用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);
        ...
阅读 4.7k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题