SpringMVC的异常处理

2020-04-07  本文已影响0人  阿杰_96c5

1 异常处理思路

Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进行异常的处理。

2 SpringMVC的异常处理

2.1 自定义异常类

/**
 * 自定义异常类
 */
public class SysException extends RuntimeException {

    /**
     * 存储提示信息
     */
    private String message;

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public SysException(String message) {
        this.message = message;
    }
}

2.2 自定义异常处理器

public class SysExceptionResolver implements HandlerExceptionResolver {

    /**
     * 处理异常业务逻辑
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @return
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        // 获取异常对象
        SysException e = null;
        if(ex instanceof SysException){
            e = (SysException)ex;
        }else{
            e = new SysException("系统正在维护...");
        }
        // 创建ModelAndView对象
        ModelAndView mv = new ModelAndView();
        mv.addObject("errorMsg",e.getMessage());
        mv.setViewName("error");
        return mv;
    }
}

2.3 springmvc.xml配置异常处理器

<!-- 配置异常处理器 -->
<bean id="sysExceptionResolver" class="org.example.exception.SysExceptionResolver"/>

2.4 测试代码

/**
 * 测试异常处理
 * @return
 */
@RequestMapping("/testException")
public String testException(){
    System.out.println("testException执行了......");
    try {
        // 模拟异常
        int a = 10/0;
    } catch (Exception e) {
        // 打印异常信息
        e.printStackTrace();
        // 抛出自定义异常信息
        throw new SysException("查询所有用户出现错误....");
    }
    return "success";
}
上一篇 下一篇

猜你喜欢

热点阅读