@ControllerAdvice + @ExceptionHandler 全局的未catch到的异常处理

/**
 * @description: @ControllerAdvice + @ExceptionHandler 在controller层实现全局的未catch到的异常处理
 **/

@ControllerAdvice
public class GlobalExceptionHandler {

  private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

  @ResponseBody
  @ExceptionHandler(Exception.class)   // 捕获所有逃逸的异常
  public String handleApiConstraintViolationException(Exception ex) {
    String rtnMessage = null;
    StringBuilder message = new StringBuilder();
    if (ex instanceof ConstraintViolationException) {
      Set<ConstraintViolation<?>>
          violations =
          ((ConstraintViolationException) ex).getConstraintViolations();
      for (ConstraintViolation<?> violation : violations) {
        message.append(violation.getMessage()).append(";");
      }
      rtnMessage = String.valueOf(message);
    } else {
      rtnMessage = ex.getMessage();
    }
    logger.error("未捕获的异常:" + rtnMessage, ex);
    return rtnMessage;
  }
}

猜你喜欢

转载自blog.csdn.net/wangpeng322/article/details/81237394
今日推荐