全部错误统一处理,不论dao层,service层,controller层都层层向向上抛, 具体实现以下spring
1. spring提供的类SimpleMappingExceptionResolverapp
2. spring接口HandlerExceptionResolverxml
3. spring注解ExceptionHandler继承
具体实现例子接口
1.1 继承类SimpleMappingExceptionResolver 并初始化相关参数io
1.2 在applicationContext.xml 上SimpleMappingExceptionResolver配置对应的bean和相关参数class
2.1 实现HandlerExceptionResolver接口配置
@Componentmodel
public class MyExceptionHandler implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
Map<String, Object> model = new HashMap<String, Object>();
model.put("ex", ex);
if(ex instanceof BusinessException) {
return new ModelAndView("error-business", model);
}else if(ex instanceof ParameterException) {
return new ModelAndView("error-parameter", model);
} else {
return new ModelAndView("error", model);
}
}
} service
3.1 自定义一个基类的业务上加入@ExceptionHandler,内容和2.1相同,其余Controller继承此基类
public class BaseController {
@ExceptionHandler
public String exp(HttpServletRequest request, Exception ex) {
request.setAttribute("ex", ex);
if(ex instanceof BusinessException) {
return "error-business";
}else if(ex instanceof ParameterException) {
return "error-parameter";
} else {
return "error";
}
}
}
public class OtherController extends BaseController