首页 > 其他分享 >自定义全局异常+处理器handler开发

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

时间:2023-01-10 13:11:33浏览次数:37  
标签:code 自定义 JsonData handler 处理器 异常 public BizException

自定义全局异常

/**
 * 全局异常处理
 */
@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);
}

标签:code,自定义,JsonData,handler,处理器,异常,public,BizException
From: https://www.cnblogs.com/xiaoyangabc/p/17039850.html

相关文章

  • 小程序动态获取自定义Tabbar的高度
    1、在tabbar组件js文件的ready方法中加入以下代码ready(){constquery=wx.createSelectorQuery().in(this)query.select('.tab-bar').boundingClientR......
  • 金子塔图,自定义图表,伪漏斗图
    金子塔图,自定义图表,伪漏斗图简易的金字塔图,设置不太灵活,可供使用者参考,需要使用者根据页面的需求复杂度等再做修改。另附链接地址:https://www.isqqw.com/pcenter?userid=......
  • es自定义分词,拼音分词、手机号分词
    一、需求描述本文针对在工作中遇到的需求:通过es来实现模糊查询来进行总结;模糊查询的具体需求是:查询基金/A股/港股等金融数据,要求可以根据字段,拼音首字母,部分拼音全称进行......
  • Vue + Element 自定义上传封面组件
    前一段时间做项目,频繁使用到上传图片组件,而且只上传一个封面,于是想着自定义一个图片封面上传组件。先来看一下效果:            第一张图片是上传......
  • C++核心知识回顾(自定义数据类型)
    复习C++类自定义数据类型最灵活的方式就是使用C++的类结构现在定义一个货币类型Currency:enumsignType{PLUS,MINUS};classCurrency{public:Currency(signTy......
  • DRF之过滤,排序,自定义异常和分页
    DRF数据的过滤参考网址https://www.cnblogs.com/songhaixing/p/14687072.htmldrf内置的过滤组件SearchFilter###modelsclassBookInfo(models.Model):ti......
  • 实现自定义 Spring AOP 注解
    实现自定义SpringAOP注解翻译原文链接ImplementingaCustomSpringAOPAnnotation1.介绍在本文中,我们将使用Spring中的AOP支持来实现自定义AOP注解。Int......
  • NoneBot2聊天机器人自定义聊天内容
    1、按照上一篇文章所介绍的方法新建一个机器人,进入所对应的文件夹,会发现里面有一个和自己所创建的机器人名称一样的文件夹   2、进入该文件夹,会发现一个名叫plugins......
  • 当你自定义一个删除的delete方法时,不加事务注解,报错
    报错:cannotreliablyprocess'remove'call要用的注解:@Modifying@TransactionalintdeleteUserByUserName(Stringusername); 参考:jpa报错:NoEntityM......
  • 38预处理器指令 知识点
    //什么是编译器//编译器是一种翻译程序//它用于将源语言程序翻译为目标语言程序//源语言程序:某种程序设计语言写成的,比如C#、C、C++、JAVA等语言写的程序//目标语言程......