当前位置: 首页 > 知识库问答 >
问题:

在没有定义错误解码器的情况下,在虚假客户机中的抛出声明是无用的吗?

宦博雅
2023-03-14
@FeignClient(name = "client")
public interface SomeClient {
    @RequestLine("GET /?q={q}")
    void execute(URI baseUrl, @Param("q") String q) throws SomeExceptionInMyCode;
}
public class SomeExceptionInMyCode extends Exception{

    private final int statusCode;
    private final String reason;
    private final String body;

    // getters and setters
}

是否会在失败的情况下自动尝试解码此异常的HTTP响应?或者抛出一些ExceptioninMyCode是无用的,可以在没有任何影响的情况下删除。

我在我的代码中搜索了一下,这个异常从来没有创建过。

共有1个答案

公孙威
2023-03-14

是否会在失败的情况下自动尝试解码此异常的http响应?

不,它不像这样工作,并且不会抛出SomeExceptionMyCodethrows子句是无用的。即使endpoint从其实现中抛出此异常,它也将被包装为FeignException的原因。

处理虚假客户端异常的正确方法是使用自定义异常处理实现errordecoder:

public class StashErrorDecoder implements ErrorDecoder {

    @Override
    public Exception decode(String methodKey, Response response) {
        if (response.status() >= 400 && response.status() <= 499) {
            // return 4XX exception
        }
        if (response.status() >= 500 && response.status() <= 599) {
            // return 5XX exception
        }
    }
}
@RestControllerAdvice
public class ExceptionHandler {

    @ExceptionHandler(FeignException.class)
    public String handleFeignStatusException(FeignException e, HttpServletResponse response) {
        // ...
    }

}
 类似资料:
  • 我刚刚通过nodejs.org上的软件包安装了node和npm,每当我试图搜索或安装npm时,它都会抛出以下错误,除非我执行该命令。我觉得这是一个权限问题?我已经是管理员了。

  • 我只是通过nodejs.org上的包安装了node和npm,每当我试图搜索或安装带有npm的东西时,它会抛出以下错误,除非我sudo该命令。我觉得这是个权限问题?我已经是管理员了。

  • Perl有一个未定义函数的概念。已声明但未定义的函数。 这个函数现在存在于符号表中,它可以用来解析方法调用。但是为什么这个“特征”会存在呢?在C语言中,这是因为函数是类型检查的,有时您希望在定义之前进行调用(例如解决循环依赖关系)。但是Perl没有这样的特性,所有的函数符号都是在运行时而不是编译时解析的。 > 如果不是原型,为什么它会存在? 为什么在方法解析中使用未定义的子程序?为什么不完全忽略它

  • 我有两个Kafka集群,第一个--使用“SASL SCRAM-SHA-256”机制进行身份验证,另一个--没有为其设置配置。 为了能够连接到Clickhouse中的< code>Kafka-A,我配置了一个< code>config.xml文件,如下所示: 在这一点上,我发现我无法使用Kafka引擎表连接到Kafka-B。当我尝试发生打印以下消息的错误时: storage Kafka(XXX):[

  • 我正在使用Spring框架和Hibernate开发一个web应用程序。我的问题是,我经常收到404错误,这是因为我在代码库的某个地方犯了一个错误,但控制台中没有异常消息。正因为如此,我很难找到错误在哪里,因为项目已经变得非常大,手动尝试找到问题是不切实际的。我假设是Spring导致了这个问题,所以我的问题是:是否有某种方法可以启用更详细的错误消息?谢谢

  • 在我的应用程序中,我必须知道,从一个列表中有一个服务器地址,这些地址是向上的。我发现的解决方案是从Spring引导执行器调用健康endpoint,对它们每个。JSon reponse是: 在应用程序的其他部分,我使用Spring-Cloud中的Feign客户机,这些客户机使用注释定义,它工作得很好: 不幸的是,这种配置不允许重用同一个客户机来调用不同地址上的同一个endpoint。因此,我必须定义