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"/>