异常处理机制
系统异常分为两类:预期异常和运行时异常。
系统中dao层、service层、controller层出现异常时可以通过Throws Exception向上抛出,在Spring MVC中前端控制器将由异常处理器进行异常处理,SpringMVC 提供全局异常处理器进行统一处理,一个系统只有一个异常处理器。
下面我们通过自己写一个异常处理类来模拟一下SpringMVC中的异常处理机制。
自定义异常类
对不同的异常类型定义不同的异常类,继承Exception。
/**
* 自定义异常
* 针对预期的异常,需要在程序中抛出
*/
public class CustomException extends Exception {
//异常信息
private String message;
public CustomException(String message) {
super(message);
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
全局异常处理器
Spring MVC提供了一个HandlerExceptionResolver接口。
处理思路:
- 解析出异常类型,如果该类型是系统自定义的异常,直接取出异常信息,在错误页面展示,如果该异常类型不是系统自定义的类型,构造一个自定义的异常类型。
/**
* 异常处理器
*/
public class CustomExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
CustomException exception = null;
if (ex instanceof CustomException) {