使用@ControllerAdvice实现全局异常处理
在Web开发中,最基本的都是从Controller到Service再到DAO。在开发的过程中,会需要处理各种异常。Service异常往上抛,如果上层没有try-catch,就会出异常。而通过ControllerAdvice 注解,我们可以使得所有异常在controller进行处理,而开发过程中更加专注于业务的处理
@ControllerAdvice(annotations = {RestController.class})
@Slf4j
public class DefaultControllerAdvice {
@ExceptionHandler({Throwable.class, Error.class, AbstractMethodError.class, Exception.class, HttpMessageNotReadableException.class, MissingServletRequestParameterException.class, HttpMessageConversionException.class, HttpMessageNotWritableException.class, HibernateException.class, ValidationException.class})
@ResponseBody
public ResponseMap error(Throwable e) {
String stackTrace = ExceptionUtil.exceptionStackTrace(e);
log.error(stackTrace);
ExceptionContext.setExceptionMessage(stackTrace);
return ResponseMap.commonFailure();
}
/**
* 处理系统内部异常
*
* @param e
* @return
*/
@ExceptionHandler(YuncaiException.class)
@ResponseBody
public Object yuncaiException(YuncaiException e) {
String exceptionMessage = ExceptionUtil.exceptionStackTrace(e);
log.error(exceptionMessage);
return ResponseMap.failure(e.getCode(), e.getMessage());
}
}

浙公网安备 33010602011771号