异常处理器需要实现HandlerExceptionResolver
@Component
public class ExceptionResolver implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response,
Object handler,
Exception ex) {
System.out.println("异常处理器正在执行中");
ModelAndView modelAndView = new ModelAndView();
//定义异常现象出现后,反馈给用户查看的信息
modelAndView.addObject("msg","出错啦! ");
//定义异常现象出现后,反馈给用户查看的页面
modelAndView.setViewName("error.jsp");
return modelAndView;
}
}
注解开发异常处理器
在类上添加@ControllerAdvice注解
在方法上添加@ExceptionHandler实现异常分类管理
@Component
@ControllerAdvice
public class ExceptionAdvice {
@ExceptionHandler(Exception.class)
@ResponseBody
public String doOtherException(Exception ex){
return "出错啦,请联系管理员! ";
}
}
异常处理解决方案
异常分类:
- 业务异常
- 发送对应消息传递给用户,提醒规范操作
- 系统异常
- 发送固定消息传递给用户
- 发送特定消息给运维人员,提醒维护
- 记录日志
其他异常
- 发送固定消息传递给用户
- 发送特定消息给编程人员,提醒维护
- 纳入预期范围内
- 记录日志
自定义异常
格式:继承自RuntimeExctption,实现所有构造方法 ```java //自定义异常继承RuntimeException,覆盖父类所有的构造方法 public class BusinessException extends RuntimeException { public BusinessException() { }
public BusinessException(String message) { super(message); }
public BusinessException(String message, Throwable cause) { super(message, cause); }
public BusinessException(Throwable cause) { super(cause); }
public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } } ```