Spring自定义异常,与全局异常统一处理

1、自定义一个异常类,继承运行时异常,可以用try--catch捕获该自定义异常

/**
 * @author <a href="mailto:Tastill">Tastill</a>
 * @version 2019/11/29 9:47
 * @description 外网异常抛出统一方法
 */
public class WwException extends RuntimeException{
    private String code;
    private String msg;

    public WwException(String code) {
        this.code = code;
    }

    public WwException(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

2、全局异常统一处理

①通过@ControllerAdvice注解增强实现Controller接口类

②通过 @ExceptionHandler 自定捕获的异常类型。

③通过 @ResponseBody 返回 json 到前端。

注:

①被@ControllerAdvice注解的全局异常处理类也是一个 Controller ,我们需要配置扫描路径,确保能够扫描到这个Controller。说白了,这个抛出异常的方法,最顶层调用一定要是cotroller层。

②该注解捕获异常方法优先级低于AOP拦截的方法catch异常捕获。意思就是如果是AOP拦截,如果有异常,会先进AOP拦截的catch异常捕获方法里,如果在catch里没有再次抛出,则不会进ControllerAdvice注解的增强类。

/**
 * @author <a href="mailto:Tastill">Tastill</a>
 * @version 2019/12/9 15:57
 * @description 全局异常统一处理(运行时异常)
 */
@ControllerAdvice
public class WwExceptionResolver {
    /**
      * @description 处理所有不可知异常
      * @param
      * @return
      * @version 2.0, 2019/12/9 16:49
      * @author <a href="mailto:Tastill">Tastill</a>
      */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResponseMainEntity handleException(Exception e) {
        String code = CodeUtil.RUNERROR;
        return new ResponseMainEntity(code,"");
    }

    /**
      * @description 处理项目抛出的异常
      * @param
      * @return
      * @version 2.0, 2019/12/9 16:49
      * @author <a href="mailto:Tastill">Tastill</a>
      */
    @ExceptionHandler(WwException.class)
    @ResponseBody
    public ResponseMainEntity handleOpdRuntimeException(WwException e) {
        String code = CodeUtil.RUNERROR;
        code = e.getCode();
        return new ResponseMainEntity(code,"");
    }
}
发布了57 篇原创文章 · 获赞 44 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/Tastill/article/details/103461643