自定义全局异常+处理器handler开发

本文共1360字,阅读本文大概需要3~5分钟

自定义全局异常

/**
 * 全局异常处理
 */
@Data
public class BizException extends RuntimeException {

    private Integer code;
    private String msg;

    public BizException(Integer code, String message) {
        super(message);
        this.code = code;
        this.msg = message;
    }

    public BizException(BizCodeEnum bizCodeEnum) {
        super(bizCodeEnum.getMessage());
        this.code = bizCodeEnum.getCode();
        this.msg = bizCodeEnum.getMessage();
    }

}

自定义异常处理器

@ControllerAdvice
@Slf4j
public class ExceptionHandle {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData Handle(Exception e) {

        if (e instanceof BizException) {
            BizException bizException = (BizException) e;
            log.info("[业务异常]{}", e);
            return JsonData.buildCodeAndMsg(bizException.getCode(), bizException.getMsg());

        } else {
            log.info("[非业务异常]{}", e);
            return JsonData.buildError("全局异常,未知错误");
        }

    }
}

使用

模拟异常(改造Controller层)

@GetMapping("/find/{address_id}")
public JsonData detail(@PathVariable("address_id")Long addressId){
	int i = 1 / 0;
	AddressDO addressDO = addressService.detail(addressId);
	return JsonData.buildSuccess(addressDO);
}

@GetMapping("/find/{address_id}")
public JsonData detail(@PathVariable("address_id")Long addressId){
	//int i = 1 / 0;
	if(addressId == 1) {
		throw new BizException(-1,"测试自定义异常");
	}
	AddressDO addressDO = addressService.detail(addressId);
	return JsonData.buildSuccess(addressDO);
}

posted @   小羊abc  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示