SpringMVC中的异常处理
在SpringMVC中的异常处理,并不是单纯的try/catch,而是通过类实现的,返回给用户看的
创建全局异常处理类
public class CustomerException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder,
Exception e) {
//记录日志
e.printStackTrace();
//错误消息
String msg = "很抱歉,系统发生异常了,请联系管理员";
//响应用户错误提示
ModelAndView mav = new ModelAndView();
//返回错误消息
mav.addObject("msg", msg);
//响应错误提示页面
mav.setViewName("msg");
return mav;
}
}
配置文件中的配置
<!-- 配置全局异常处理器 -->
<bean class="exception.CustomerExceptionResolver"/>
- 通过以上的配置和类就可以实现全局的异常捕获了
- 但是这个异常捕获的信息却是固定的一句话,体验不好,所以我们可以做修改
- 修改如下
创建异常类
public class MyException extends Exception {
//错误消息
private String msg;
public MyException() {
super();
}
public MyException(String msg) {
super();
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
修改全局异常处理器
public class CustomerException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object hanlder,
Exception e) {
//记录日志
e.printStackTrace();
//错误消息
String msg = "很抱歉,系统发生异常了,请联系管理员";
if(e instanceof MyException){
msg=((MyException)e).getMsg();
}
//响应用户错误提示
ModelAndView mav = new ModelAndView();
//返回错误消息
mav.addObject("msg", msg);
//响应错误提示页面
mav.setViewName("msg");
return mav;
}
}
- 通过以上的修改,就可以做到更加灵活
- 还可以更具自己定义的异常类进行处理