Spring MVC 05:异常处理


Spring MVC 05:异常处理

当我们实际开发过程中,进行项目部署以后,往往会出现各种各样的异常,如果当客户访问以后,手贱触发了某些异常,如果就直接把这种界面扔给客户的话,客户可是会疯掉的。。。

一个异常

接下来我们就定一个属于自己的异常类和针对这个异常类的处理类以及对应的配置信息。

自定义异常类

自定义一个异常类MyException.java

public class MyException extends Exception{
    private String message;
    public MyException() {
    }
    public MyException(String message) {
        this.message = message;
    }
    @Override
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
}

接下来写一个必会出错的方法进行测试

@RequestMapping("/test5")
public String test5() throws Exception {
        System.out.println("test5()");
        try {
            int i = 1 / 0;
        } catch (Exception e) {
            e.printStackTrace();
            throw MyException("test5 error!");
        }
        return "jsp1";
}

自定义异常处理类(ExceptionResolver)

为了能让dispatch拦截到Exception,我们要定义一个异常处理类。

public class MyExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        // 分辨exception类型
        MyException ex = null;
        if (e instanceof MyException){
            ex = (MyException) e;
        }else{
            ex = new MyException("test5 error!");
        }
        ModelAndView mv = new ModelAndView();
        mv.addObject("errorMsg",ex.getMessage());
        mv.setViewName("error");
        return mv;
    }
}

然后自己写一个出现异常时应该跳转的页面,这里是error.jsp

配置SpringMVC.xml,添加映射关系

 <bean id="myExceptionResolver" class="cn.silverCorridors.MyExceptionResolver"></bean>

这样就可以了

自定义异常页面


文章作者: 银色回廊
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 银色回廊 !
评论
  目录