@RestControllerAdvice public class BaseControllerAdvice extends Object
该类具体实现了全局请求异常拦截, 对于不同的异常有不同的拦截并返回, 无论是自定义异常/校验异常/未知异常等都具有详细的实现, 拦截后给予客户端友好返回, 同时将异常规范的写出到日志文件中, 便于项目运行中通过日志排查问题
注意: 该类启用的前置条件为标注了
@EnableControllerAdvice 注解
| 构造器和说明 |
|---|
BaseControllerAdvice() |
| 限定符和类型 | 方法和说明 |
|---|---|
BaseVO |
generalErrorHandle(ApplicationException e,
javax.servlet.http.HttpServletRequest request)
自定义异常全局捕获
|
BaseVO |
serverErrorHandler(Exception e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
系统异常全局捕获
|
BaseVO |
stackTracerErrorHandler(StackTraceException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
堆栈异常全局捕获
|
com.alibaba.fastjson.JSONObject |
thirdPartyErrorHandler(ThirdPartyException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
第三方异常全局捕获
|
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(org.springframework.validation.BindException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
绑定异常全局捕获
|
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(org.springframework.http.converter.HttpMessageNotReadableException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
请求体异常全局捕获
RequestType =
RequestBody
Also throw to InvalidFormatException |
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(org.springframework.web.HttpRequestMethodNotSupportedException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
方法不被允许全局捕获
|
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(org.springframework.web.bind.MethodArgumentNotValidException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
请求体验证全局捕获
RequestType =
RequestBody
捕获来自 javax.validation.constraints |
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(org.springframework.web.method.annotation.MethodArgumentTypeMismatchException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
参数转换异常全局捕获
|
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(org.springframework.web.bind.MissingServletRequestParameterException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
参数为空全局捕获
RequestType =
RequestParam
捕获来自 RequestParam |
com.alibaba.fastjson.JSONObject |
validationExceptionHandler(javax.validation.ValidationException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
验证异常全局捕获
RequestType =
RequestParam
捕获来自 javax.validation.constraints |
@ExceptionHandler(value=ApplicationException.class) public BaseVO generalErrorHandle(ApplicationException e, javax.servlet.http.HttpServletRequest request)
e - ApplicationExceptionrequest - HttpServletRequest@ExceptionHandler(value=StackTraceException.class) public BaseVO stackTracerErrorHandler(StackTraceException e, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
e - StackTraceExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=ThirdPartyException.class) public com.alibaba.fastjson.JSONObject thirdPartyErrorHandler(ThirdPartyException e, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
e - ThirdPartyExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=java.lang.Exception.class) public BaseVO serverErrorHandler(Exception e, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
e - Exceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=org.springframework.web.bind.MissingServletRequestParameterException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(org.springframework.web.bind.MissingServletRequestParameterException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
RequestType = RequestParam
捕获来自 RequestParam
e - MissingServletRequestParameterExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=org.springframework.web.method.annotation.MethodArgumentTypeMismatchException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(org.springframework.web.method.annotation.MethodArgumentTypeMismatchException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
e - MethodArgumentTypeMismatchExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=javax.validation.ValidationException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(javax.validation.ValidationException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
RequestType = RequestParam
捕获来自 javax.validation.constraints
e - ValidationExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=org.springframework.http.converter.HttpMessageNotReadableException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(org.springframework.http.converter.HttpMessageNotReadableException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
RequestType = RequestBody
Also throw to InvalidFormatException
e - HttpMessageNotReadableExceptionrequest - HttpServletRequestresponse - HttpServletResponseEnum deserialize failed exception is unsolved
@ExceptionHandler(value=org.springframework.web.bind.MethodArgumentNotValidException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(org.springframework.web.bind.MethodArgumentNotValidException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
RequestType = RequestBody
捕获来自 javax.validation.constraints
e - MethodArgumentNotValidExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=org.springframework.validation.BindException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(org.springframework.validation.BindException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
e - BindExceptionrequest - HttpServletRequestresponse - HttpServletResponse@ExceptionHandler(value=org.springframework.web.HttpRequestMethodNotSupportedException.class)
public com.alibaba.fastjson.JSONObject validationExceptionHandler(org.springframework.web.HttpRequestMethodNotSupportedException e,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
e - HttpRequestMethodNotSupportedExceptionrequest - HttpServletRequestresponse - HttpServletResponseCopyright © 2021 HaiChuang Inc.. All rights reserved.