首页 > 其他分享 >openfeign 传递异常信息

openfeign 传递异常信息

时间:2023-08-07 09:46:17浏览次数:29  
标签:AppException openfeign backObject apiResponse 传递 Result new 异常 public

1 处理非200 异常

pom

        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-jackson</artifactId>
        </dependency>

code

public class FeignException implements ErrorDecoder {
    private final ErrorDecoder defaultErrorDecoder = new Default();

    @Override
    public Exception decode(String methodKey, Response response) {
        JacksonDecoder decoder = new JacksonDecoder();
        Result<?> apiResponse;
        try {
            apiResponse = (Result<?>) decoder.decode(response, Result.class);
        } catch (Exception exception) {
            log.error("FeignException decode exception", exception);
            throw new AppException(ResultCodeEnum.FEIGN_EXCEPTION);
        }
        if (apiResponse != null) {
            return new AppException(apiResponse.getCode(), apiResponse.getMessage());
        } else {
            return defaultErrorDecoder.decode(methodKey, response);
        }
    }
}

处理200 自定义异常


@Aspect
@Component
@Slf4j
public class MicroServiceExceptionAop {

    /**
     * 自定义切面切点,拦截feign目录下的所有方法
     */
    @Pointcut("execution(* com.huawei.mideas.requirement.feign.*.*(..))")
    public void servicePointcut() {

    }

    /**
     * 切点方法成功执行返回后运行
     *
     * @param joinPoint 切面信息
     * @param returnValue 返回结果
     */
    @AfterReturning(value = "servicePointcut()", returning="returnValue")
    public void doAfterReturning(JoinPoint joinPoint, Object returnValue) {
        Result<?> backObject;
        try {
            backObject = (Result<?>) returnValue;
        } catch (Exception e) {
            log.error("MicroServiceExceptionAop doAfterReturning e", e);
            throw new AppException(ResultCodeEnum.MICRO_SERVICE_EXCEPTION_AOP_EXCEPTION);
        }
        if (backObject.getCode() != 200) {
            throw new AppException(backObject.getCode(), backObject.getMessage());
        }
    }
}

标签:AppException,openfeign,backObject,apiResponse,传递,Result,new,异常,public
From: https://www.cnblogs.com/linzm14/p/17610639.html

相关文章

  • Linux设备树的传递及Kernel中对设备树的分析
    当U-Boot将设备树加载到内存指定位置后,ARM内核的SoC以通用寄存器r2来传递dtb在内存中的地址。kernel获取到该地址后对dtb文件做进一步的处理。设备树的传递当使用bootm加载kernel镜像时(bootz是对bootm的一种封装以及功能扩展,实质一样)。U-Boot跳转到k......
  • 异常: java.security.InvalidKeyException: Illegal key size
    问题描述importorg.apache.commons.codec.digest.DigestUtils;importorg.bouncycastle.jce.provider.BouncyCastleProvider;importjavax.crypto.Cipher;importjavax.crypto.spec.SecretKeySpec;importjava.security.Security;importjava.util.Base64;publicclass......
  • 多个C文件混合编译,涉及函数相互调用,地址传递要注意的!
    tc.h#pragmaoncechar*fun();//main函数调用到这个函数,但是在其他.c中定义,在头文件申明下先tacc.c#include<stdio.h>char*fun(){printf("saDHAKJHFJ\n");inti=100;printf("i=%d\n",i);char*pr=(char*)malloc(100);*pr......
  • 异常处理和调试技巧
    欢迎来到C#语言入门指南的第四篇博客!在前几篇博客中,我们已经学习了C#语言的基本概念、面向对象编程、数组和集合。今天,我们将深入了解C#中的异常处理和调试技巧。异常处理是编写健壮程序的重要组成部分,而调试技巧则帮助我们定位和解决程序中的错误。让我们开始吧!1.异常处理的重要......
  • 异常检测——无监督、高斯分布模型,需要带标记的样本数据,基本假设:特征符合高斯分布
    给定数据集x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据xtest是不是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性p(x)。......
  • 进程注入检测——DLL注入检测的几种方式:1、命令行,包含某些特定注入工具的关键字 2、排
    进程注入检测DLL注入检测的几种方式:1、命令行,包含某些特定注入工具的关键字2、排除白名单的可疑注入3、可疑的DLL加载4、特定工具注入的startaddress异常 以下内容来自CAR和splunk等开源检测渠道: title:CobaltStrikeProcessInjectionid:6309645e-122d-4c5b-bb2b-22e4f9c2fa42......
  • 动态HTTP异常检测和解决方法
     动态HTTP代理可以提供更好的代理服务质量和稳定性,但在实际使用过程中,仍然会遇到一些问题和异常情况。为了保证HTTP代理的有效性并及时处理异常,可以采取以下验证和处理方法: 1.IP有效性验证: -验证IP的连通性:使用ping命令或检测工具,验证HTTP代理能否正常连通到目标服务器。......
  • 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践
     uber全球用户每天会产生500万条行程,保证数据的准确性至关重要。如果所有的数据都得到有效利用,t通过元数据和聚合的数据可以快速检测平台上的滥用行为,如垃圾邮件、虚假账户和付款欺诈等。放大正确的数据信号能使检测更精确,也因此更可靠。为了解决我们和其他系统中的类似挑战,UberE......
  • LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测
    结合CNN的可以参考:http://fcst.ceaj.org/CN/article/downloadArticleFile.do?attachType=PDF&id=1497除了行为,其他还结合了时序的异常检测的:https://conference.hitb.org/hitbsecconf2018ams/materials/D1T2%20-%20Eugene%20Neyolov%20-%20Applying%20Machine%20Learning%20to%20Us......
  • kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群
    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers数据分析中的一项具有挑战性但非常重要的任务是处理异常值。我们通常将异常值定义为与其余数据群1不一致的样本或事件。异常值通常包含有关影响数据生成过程2的系统和实体的异常特征的有用信息。异常检测算......