JavaWeb学习笔记-springmvc-16-异常处理

springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理

对不同的异常类型定义异常类

public class CustomException extends Exception{
    //异常信息
    public String message;
    public CustomException(String message){
        super(message);
        this.message = message;
    }
    public String getMessage(){
        return message;
    }
    public void setMessage(String message){
        this.message = message;
    }
}

系统遇到异常,在程序中手动抛出,dao抛给service,service抛给controller,controller抛给前端控制器,前端控制器抛给全局异常处理器
全局异常处理器:解析出异常类型,如果是系统自定义异常,直接取出异常信息,在错误页展示,如果该异常类型不是系统自定义异常,构造一个自定义的异常类型(信息为未知)

//自定义异常处理器
public class CustomExceptionResolver implements HandlerExceptionResolver{

    public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex){
        //handler就是处理器适配器执行的Hanlder对象(只有method)
        //解析异常
        /*
        String message = null;
        if(ex instanceof CustomerException){
                message = ((CustomException)ex).getMessage();
        }else{
            message = "未知错误";
        }*/
        CustomExceptio customException = null;
        if(ex instanceof CustomException){
            customException = ((CustomException)ex);
        else{
            customException = new CustomException("未知错误");
        }
        String message = customException.getMessage(); 
        ModelAndView modelAndView = new ModelAndView();
        //将错误信息传到页面
        modelAndView.addObject("message",message);
        //指向错误信息
        modelAndView.setViewName("error");
        return modelAndView;
    }
}

springmvc.xml配置全局异常管理器

<!--全局异常处理器,只要实现HandlerExceptionResolver-接口就是去全局异常处理器->
<bean class="xxx.CustomException"/>

猜你喜欢

转载自blog.csdn.net/weixin0605/article/details/80835716