关于Web应用的全局异常处理,上一篇介绍了ControllerAdvice结合@ExceptionHandler的方式来实现web应用的全局异常管理;
本篇博文则带来另外一种并不常见的使用方式,通过实现自定义的HandlerExceptionResolver,来处理异常状态
![4720973116c86bb2c31d9bc8eb91d2eb.png](https://img-blog.csdnimg.cn/img_convert/4720973116c86bb2c31d9bc8eb91d2eb.png)
I. 环境搭建
首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活;
创建一个maven项目,pom文件如下
org.springframework.boot spring-boot-starter-parent 2.1.7UTF-8UTF-8Finchley.RELEASE1.8org.springframework.boot spring-boot-starter-web com.alibaba fastjson 1.2.45org.springframework.boot spring-boot-maven-plugin spring-milestonesSpring Milestoneshttps://repo.spring.io/milestonefalse
II. HandlerExceptionResolver
1. 自定义异常处理
HandlerExceptionResolver顾名思义,就是处理异常的类,接口就一个方法,出现异常之后的回调,四个参数中还携带了异常堆栈信息
@NullableModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex);
我们自定义异常处理类就比较简单了,实现上面的接口,然后将完整的堆栈返回给调用方
public class SelfExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { String msg = GlobalExceptionHandler.getThrowableStackInfo(ex); try { response.addHeader("Content-Type