全局异常处理Java

创建全局统一异常类

@RestControllerAdvice

@ExceptionHandler

@Slf4j
@RestControllerAdvice
public class UninfiedExceptionHandler {

    @ExceptionHandler
    public JSONResult exceptionHandler(Throwable throwable) {
      log.info("统一异常,{}",throwable.getMessage());
      throwable.printStackTrace();
      return JSONResult.error("系统异常,我们正在救援猴子");
    }

    @ExceptionHandler(GlobalException.class)
    public JSONResult exceptionHandler(GlobalException e) {
        log.info("自定义异常,{}",e.getMessage());
        e.printStackTrace();
        return JSONResult.error(e);
    }
}

用我们准备的接口测试一下

没有问题,去救援猴子了

那这时我们自定义的异常向抛给用户又该如何处理呢

我们重新写一个接口,测试

依旧抛出的是全局异常,如果我们要给用户返回其他异常怎么办呢

自定义异常

在创建一个我们自己的全局异常,即自定义全局异常

小伙伴们注意,下面的code字段时我自己加上去去的,直接继承RuntimeException是没有这个字段的

至于构造方法,让IDEA自动生成就可以了,不用自己写哦

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class GlobalException extends RuntimeException {
    private String code;


    public GlobalException(String message, String code) {
        super(message);
        this.code = code;
    }

    public GlobalException(String message, Throwable cause, String code) {
        super(message, cause);
        this.code = code;
    }

    public GlobalException(Throwable cause, String code) {
        super(cause);
        this.code = code;
    }

    public GlobalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, String code) {
        super(message, cause, enableSuppression, writableStackTrace);
        this.code = code;
    }
}

在我们之前的统一异常类UninfiedExceptionHandler 中在添加一个方法,即把我们的自定义全局异常加进去

import com.qyf.dto.JSONResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@Slf4j
@RestControllerAdvice
public class UninfiedExceptionHandler {

    @ExceptionHandler
    public JSONResult exceptionHandler(Throwable throwable) {
      log.info("统一异常,{}",throwable.getMessage());
      throwable.printStackTrace();
      return JSONResult.error("系统异常,我们正在救援猴子");
    }

    @ExceptionHandler(GlobalException.class)
    public JSONResult exceptionHandler(GlobalException e) {
        log.info("自定义异常,{}",e.getMessage());
        e.printStackTrace();
        return JSONResult.error(e);
    }
}

来看看结果

这个时候,想给用户抛什么异常可以随便写了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值