首页 > 其他分享 >微服务异常处理的几种方法

微服务异常处理的几种方法

时间:2023-06-30 17:36:14浏览次数:37  
标签:处理 value 几种 处理器 注解 全局 异常 class

创建全局异常处理器

@RestControllerAdvice   //声明当前这个类是全局异常处理器
public class GlobalExceptionHandler {

    /**
     * @ExceptionHandler指定当前这个方法就是一个异常处理方法,并且指定当前方法可以处理的异常类型
     * @param e
     * @return
     */
    @ExceptionHandler(value = GmallException.class)
    public Result gmallExceptionHandler(GmallException e){
        e.printStackTrace();
        ResultCodeEnum resultCodeEnum = e.getResultCodeEnum();
        return Result.build(null, resultCodeEnum);
    }

    /**
     * 处理非业务异常
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class )
    public Result systemExceptionHandler(Exception e){
        e.printStackTrace();
        return Result.build(null, ResultCodeEnum.SYSTEM_EXCEPTION);
    }
}

方法一:使用@ComponentScan注解

@ComponentScan(basePackages = "全局异常处理器所在的包路径")
注:@SpringBootApplication注解中有默认的@ComponentScan,再添加@ComponentScan会覆盖默认的包扫描路径,全局异常处理器所在的包路径必须和启动类所在的包路径一致,否则扫描不到
解决办法:调大包扫描的范围

方法二:使用@Import注解

@Import(value = GlobalExceptionHandler.class)
注:使用这个注解必须知道全局异常处理类的类名称

方法三:使用自定义注解

@Target(value = ElementType.TYPE)               //自定义注解使用位置为类
@Retention(value = RetentionPolicy.RUNTIME)     //生效时期
@Import(value = GlobalExceptionHandler.class)
public @interface EnableGlobalExceptionHandler {
}

方法四:使用Spring Boot的自动化配置

  1. 在全局异常处理器所在的项目resources资源目录下创建META-INF文件夹,在该文件夹下创建spring.factories文件,在文件中添加以下内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\要实现自动化配置的类的全类名

标签:处理,value,几种,处理器,注解,全局,异常,class
From: https://www.cnblogs.com/insilently/p/17517400.html

相关文章

  • 处理开发者账号到期导致APP下架的方处理开发者账号到期导致APP下架的方法
     开发人员账号到期时,应采取以下步骤处理APP被下架问题:登录开发者账号。点击右上角的"账户",选择"续费"。输入信用卡信息,确保使用支持Visa的银行卡。续费后,等待大约24小时,苹果将自动重新上架APP。在此之前已下载到手机上的APP可以继续正常使用。请注意:苹果开发......
  • a标签图片下载变成窗口打开问题处理
    import{saveAs}from'file-saver'downloadImage(url,fileName){   constvideoList=['mp4','avi','flv','mov']   letname=fileName   consturlTypeList=url.split('.')   c......
  • 处理字符串
    后端返回的字符串需要放到el-table-column中,有的字符串有换行符,显示在页面中是"XXXXXXXXXX\nXXXXXX",用v-html\white-space\正则处理str.replace(/\n/g,'<br>')都不行;仔细查看后端返回的原字符串为"XXXXXXXXXX\\nXXXXXX",用正则处理str.replace(/\\n/g,'<br>')后再用v-......
  • 日期处理总结
    1.日期处理1.1引入必要依赖:版本5.3.8 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency> <de......
  • 【快应用】快应用加桌的几种实现方式
     【关键词】快应用、桌面快捷方式、Deeplink【问题背景】在快应用开发和使用过程中,我们对于喜欢的应用总想把它添加到桌面,方便下次快速进入。那么,有几种实现方式呢?【实现方法】1.Deeplink加桌快应用提供标准的Deeplink入口,可以实现点击web页面的链接启动快应用。安装快应用中心后......
  • 【快应用】快应用加桌的几种实现方式
    ​【关键词】快应用、桌面快捷方式、Deeplink 【问题背景】在快应用开发和使用过程中,我们对于喜欢的应用总想把它添加到桌面,方便下次快速进入。那么,有几种实现方式呢? 【实现方法】1.Deeplink加桌快应用提供标准的Deeplink入口,可以实现点击web页面的链接启动快应用。安......
  • BeanShell 后置处理程序 提取记录
    importjava.util.regex.Matcher;importjava.util.regex.Pattern;StringresponseData=prev.getResponseDataAsString();Patternpattern=Pattern.compile("砖石数\\[([0-9]+)\\]");Matchermatcher=pattern.matcher(responseData);if(matcher.find()){......
  • jquery的几种常见事件
    1.事件ready(fn)当DOM(文档对象模型)已经加载,并且页面(包括图像)已经完全呈现时,会发生ready事件。通俗的来讲就是当页面加载完时就会执行此函数事件。可以在同一个页面中无限次地使用$(document).ready()事件。其中注册的函数会按照(代码中的)先后顺序依次执行。$(document).read......
  • java中的全局异常处理和局部处理方法
    1.在三层构架项目中,出现了异常,该如何处理?方案一:在所有Controller的所有方法中进行try…catch处理缺点:代码臃肿(不推荐)方案二:全局异常处理器好处:简单、优雅(推荐)2.方法:1.添加类:GlobalExceptionHandler2.添加注解:@RestControllerAdvice3.添加异常处理方法:ex并给方法添加注解......
  • 处理HTTPGET请求参数中含有数组不识别的问题处理
    如:  在Program中增加 ......