全部錯誤統一處理,不論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