异常处理器就是把异常加工一下返回给用户,如果后台报错了可以给用户显示成服务器异常
创建一个用户存储信息的实体类
public class SysException extends Exception {
//存储提示信息
private String message;
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public SysException(String message) {
this.message = message;
}
}
创建一个异常处理类
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 异常处理器
*/
public class SysExceptionResolver implements HandlerExceptionResolver {
/**
* 处理异常的逻辑
* @param request
* @param response
* @param o
* @param ex
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception ex) {
//准备获取异常对象
SysException e = null;
if (ex instanceof SysException){
e = (SysException) ex;
}else{
e = new SysException("系统正在维护....");
}
//创建对象
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
mv.setViewName("error");
return mv;
}
}
然后在controller里这样调用
@RequestMapping("testException")
public String testException() throws SysException {
try {
int a = 10/0;
} catch (Exception e) {
e.printStackTrace();
throw new SysException("查询所有的用户出现了错误");
}
return"success";
}
当然还有一步是在springmvc配置一下他的bean
<bean id="sysExceptionResolver" class="cn.itcast.exception.SysExceptionResolver"/>