Spring Boot 异常处理
Spring Boot 默认提供了程序出错的结果映射路径/error
(见:Spring Boot 错误页面)。其内部是通过判断请求头中的Accept
的内容是否为text/html
来区分请求是来自客户端浏览器(浏览器通常默认自动发送请求头内容Accept:text/html
)还是客户端接口的调用,以此来决定返回页面视图还是 JSON 消息内容。
1. 自定义异常处理
使用@ControllerAdvice
注解可以对已知的Controller
中抛出的异常进行捕获并处理。
|
|
1.1 @ExceptionHandler
该注解用于标注处理方法处理哪些特定的异常。被该注解标注的方法可以有以下任意顺序的参数类型:
- Throwable、Exception 等异常对象;
- ServletRequest、HttpServletRequest、ServletResponse、HttpServletResponse;
- HttpSession 等会话对象;
- org.springframework.web.context.request.WebRequest;
- java.util.Locale;
- java.io.InputStream、java.io.Reader;
- java.io.OutputStream、java.io.Writer;
- org.springframework.ui.Model;
- ModelAndView;
- org.springframework.ui.Model;
- java.util.Map;
- org.springframework.web.servlet.View;
- @ResponseBody 注解标注的任意对象;
- HttpEntity<?> or ResponseEntity<?>;
- void;
1.2 @ResponseStatus
@ExceptionHandler 注释可以与 @ResponseStatus 结合起来,以定义 HTTP 响应的状态码值。
以下为涉及本示例的其余代码:
|
|
|
|
|
|
|
|
示例项目开发环境:Java-8、Maven-3、IntelliJ IDEA-2017、Spring Boot-1.5.2.RELEASE
完整示例项目链接:spring-boot-exception-handler-sample
参考文档文献链接:http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-error-handling