美文网首页
Restful接口统一异常处理

Restful接口统一异常处理

作者: Johar77 | 来源:发表于2020-03-15 10:55 被阅读0次

    1.背景

    目前微服务开发越来越多,接口之间的交互也越多。考虑到一些异常情况,接口需要对异常进行统一处理,规范异常处理的行为。

    2.实现方式

    通过@RestControllerAdvice,对Restful接口异常进行统一处理,以下是一个简单的实例。

    @RestControllerAdvice

    @Slf4j

    public class GlobalExceptionTranslator {

    @ExceptionHandler(MethodArgumentNotValidException.class)

    public BaseResponsehandleError(MethodArgumentNotValidException e){

    log.warn("Method Argument Not Valid", e);

            return BaseResponse

    .builder()

    .resultCode(ErrorCode.ERROR_PARAM_NOT_VALID.getErrorCode())

    .message(ErrorCode.ERROR_PARAM_NOT_VALID.getMessage())

    .build();

        }

    @ExceptionHandler(MissingServletRequestParameterException.class)

    public BaseResponsehandleError(MissingServletRequestParameterException e){

    log.warn("Param Miss", e);

            return BaseResponse

    .builder()

    .resultCode(ErrorCode.ERROR_PARAM_MISS.getErrorCode())

    .message(ErrorCode.ERROR_PARAM_MISS.getMessage())

    .build();

        }

    @ExceptionHandler(Throwable.class)

    public BaseResponsehandlerError(Throwable e){

    log.error("Unknown Error", e);

            return BaseResponse

    .builder()

    .resultCode(ErrorCode.ERROR_UNKNOWN.getErrorCode())

    .message(ErrorCode.ERROR_UNKNOWN.getMessage())

    .build();

        }

    }

    异常错误信息,也可以在封装到一个类进行统一处理,当然最好是实现多语言。

    public enum ErrorCode {

    OK(0, "success"),

        ERROR_PARAM_NOT_VALID(1, "Method Argument Not Valid"),

        ERROR_PARAM_MISS(2, "Method Argument Miss"),

        ERROR_UNKNOWN(9999, "Unknown Error");

        private int errorCode;

        private Stringmessage;

        ErrorCode(int errorCode, String message) {

    this.errorCode = errorCode;

            this.message = message;

        }

    public int getErrorCode() {

    return errorCode;

        }

    public StringgetMessage() {

    return message;

        }

    }

    这样,在RestController中,可以直接抛出异常,由统一异常处理类进行处理,返回统一的格式的结果。

    相关文章

      网友评论

          本文标题:Restful接口统一异常处理

          本文链接:https://www.haomeiwen.com/subject/bbfqehtx.html