import com.logistics.channel.constant.BizException;
import com.logistics.channel.tool.CommonErrorEnum;
import com.logistics.channel.tool.ResultBody;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.NoHandlerFoundException;
import javax.servlet.http.HttpServletRequest;
@ControllerAdvice
@Slf4j
@ResponseBody
public class UnifiedExceptionHandler {
/**
* @Author: ljh
* @Description: 系统异常捕获处理
* @Date: 16:07 2018/5/30
*/
@ExceptionHandler(value = Exception.class)
public ResultBody javaExceptionHandler(HttpServletRequest re , Exception ex) {
log.error("捕获到Exception异常", ex);
//异常日志入库
return ResultBody.error(CommonErrorEnum.SERVER_BUSY);
}
/**
* @Author: ljh
* @Description: 自定义异常捕获处理
* @Date: 16:08 2018/5/30
*/
@ExceptionHandler(value = BizException.class)//BizException是自定义的一个异常
public ResultBody bizExceptionHandler(BizException ex) {
log.error("捕获到MessageCenterException异常", ex.getMessage());
//异常日志入库
return ResultBody.error(ex.getMessage());
}
/**
* @Author: ljh
* @Description: 自定义异常捕获处理
* @Date: 16:08 2021/7/20
*/
@ExceptionHandler(value = IllegalArgumentException.class)//MessageCenterException是自定义的一个异常
public ResultBody illegalArgumentExceptionHandler(IllegalArgumentException ex) {
log.error("捕获到IllegalArgumentException异常", ex.getMessage());
//异常日志入库
return ResultBody.error(ex.getMessage());
}
/**
* @Author: ljh
* @Description: 自定义异常捕获处理
* @Date: 16:08 2021/7/20
*/
@ExceptionHandler(value = NullPointerException.class)
public ResultBody nullPointerExceptionHandler(NullPointerException ex) {
log.error("捕获到NullPointerException异常", ex.getMessage());
//异常日志入库
return ResultBody.error(CommonErrorEnum.SERVER_BUSY);
}
/**
* @Author: ljh
* @Description: @NotBlank,@NotNull注解的message信息异常捕获处理
* @Date: 16:08 2021/7/20
*/
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(BindException.class)
public ResultBody exceptionHandler(BindException ex) {
log.error("捕获到BindException异常", ex.getMessage());
return ResultBody.error(ex.getBindingResult().getFieldError().getDefaultMessage());
}
/**
* @Author: ljh
* @Description: restful
* @Date: 16:08 2021/7/20
*/
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(NoHandlerFoundException.class)
public ResultBody noHandlerFoundExceptionHandler(NoHandlerFoundException ex) {
log.error("捕获到BindException异常", ex.getMessage());
return ResultBody.error(CommonErrorEnum.URL_ERROR);
}
/** @NotBlank,
* @NotNull注解的message信息异常捕获处理
* */
@ExceptionHandler(value= MethodArgumentNotValidException.class)
public ResultBody MethodArgumentNotValidHandler(HttpServletRequest request, MethodArgumentNotValidException ex) {
log.error("捕获到MethodArgumentNotValidHandler异常:",ex.getBindingResult().getFieldError().getDefaultMessage());
return ResultBody.error(ex.getBindingResult().getFieldError().getDefaultMessage());
}
}
统一异常管理
转载能力是有限的,努力是无限的。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:字符串转json
下一篇:java注解的实现原理(1)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SpringBoot - 参数校验、统一异常、统一响应
转载自: https://blo
java spring apache -
Springboot:统一异常处理
类定义一个异常处理方法
spring boot spring java 异常处理 软件开发过程 -
CXF统一异常处理
关于CXF的其他介绍,此处不做讨论,本文主要考虑CXF的统一异常处理。目录CXF默认的异常处理异常出现的地方ExceptionMapper
cxf 异常 统一异常 ExceptionMapper restful -
@RestControllerAdvice 统一异常处理
@RestControllerAdvice是一个组合注解,由@ControllerAdvice、@ResponseBody组成
java spring spring boot 首字母 数据