shop-common-CommonExceptionAdvice

package com.seemygo.shop.cloud.web.advice;

import com.seemygo.shop.cloud.exception.BusinessException;
import com.seemygo.shop.cloud.resp.CodeMsg;
import com.seemygo.shop.cloud.resp.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.ExceptionHandler;

import java.util.List;

@Slf4j
public class CommonExceptionAdvice {

    @ExceptionHandler(Exception.class)
    public Result<?> serverExceptionHandler(Exception ex) {
        log.error("[server exception]", ex);
        return Result.defaultError();
    }

    @ExceptionHandler(BindException.class)
    public Result<?> serverExceptionHandler(BindException ex) {
        List<ObjectError> allErrors = ex.getAllErrors();
        ObjectError error = allErrors.get(0);
        String message = error.getDefaultMessage();
        // 1个请求 -》参数错误 -》用户名密码错误
        // 多个请求 -》参数错误 -》用户名密码错误、用户名格式不正确、用户名不能为空
        // 静态变量:共享资源:多线程访问:线程安全问题
        return Result.error(new CodeMsg(CodeMsg.PARAM_ERROR.getCode(), message));
    }

    @ExceptionHandler(BusinessException.class)
    public Result<?> businessExceptionHandler(BusinessException ex) {
        CodeMsg codeMsg = ex.getCodeMsg();
        log.error("[business exception] business handle failed, code msg is:{code:{}, msg:{}}", codeMsg.getCode(), codeMsg.getMsg());
        return Result.error(codeMsg);
    }
}

 

posted @ 2021-12-02 15:03  白芷100  阅读(23)  评论(0)    收藏  举报