为什么需要全局异常处理器?
在程序开发中,我们的程序无法避免的会碰到各种异常情况,配置全局异常处理可以方便开发人员编写和管理异常处理的代码。
Springmvc的全局异常处理配置Demo
第一步:自定义异常类如CustomException类继承Exception类
public class CustomException extends Exception{
private String message;
public CustomException(String message){
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
第二步:编写异常处理类,需要实现HanlderExceptionResolver接口
public class CustomExceptionResolver implements HandlerExceptionResolver{
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
// TODO Auto-generated method stub
CustomException 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("fail");
return modelAndView;
}
}
第三步:在spring的配置文件中注册全局异常处理:
<!-- 配置全局异常处理器 ,只要实现了HandlerExceptionResolver接口的类就是全局异常处理器-->
<bean class="com.readboy.ssm.exception.CustomExceptionResolver" />
在程序中使用异常处理器:
在代码需要抛出异常的地方使用如throw new CustomException("该字段不能为空");
即可抛出异常
一般来说,与业务功能相关的的异常,在Service中抛出,如增删改查
与业务功能无关的异常,在Controller中抛出,如页面某个输入框的输入不能为空