Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有定义错误解码器的情况下,外部客户端中的抛出声明是否无效?_Java_Spring_Spring Boot_Spring Cloud_Spring Cloud Feign - Fatal编程技术网

Java 在没有定义错误解码器的情况下,外部客户端中的抛出声明是否无效?

Java 在没有定义错误解码器的情况下,外部客户端中的抛出声明是否无效?,java,spring,spring-boot,spring-cloud,spring-cloud-feign,Java,Spring,Spring Boot,Spring Cloud,Spring Cloud Feign,我有一个像这样的假客户 @FeignClient(name=“client”) 公共接口客户端{ @请求行(“获取/?q={q}”) void execute(uribaseurl,@Param(“q”)String q)抛出一些ExceptionInMyCode; } 查看此会引发一些异常nMyCode我在问自己何时会引发此异常。没有为客户端定义的配置,没有错误解码器。异常看起来像这样 公共类SomeExceptionInMyCode扩展异常{ 专用最终int状态码; 私人最终字符串原因;

我有一个像这样的假客户

@FeignClient(name=“client”)
公共接口客户端{
@请求行(“获取/?q={q}”)
void execute(uribaseurl,@Param(“q”)String q)抛出一些ExceptionInMyCode;
}
查看此
会引发一些异常nMyCode
我在问自己何时会引发此异常。没有为客户端定义的配置,没有错误解码器。异常看起来像这样

公共类SomeExceptionInMyCode扩展异常{
专用最终int状态码;
私人最终字符串原因;
私有最终字符串体;
//接球手和接球手
}
如果出现故障,是否会自动尝试解码HTTP对此异常的响应?或者
抛出一些异常nMyCode
是无用的,可以在没有任何影响的情况下删除

我在我的代码中搜索,但从未创建此异常

如果出现故障,是否会自动尝试解码http对此异常的响应

不,它不是这样工作的,并且不会抛出
SomeExceptionMyCode
抛出
子句是无用的。即使端点从其实现中抛出此异常,它也将被包装为导致
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
        }
    }
}

如果
stasherrordecommer
抛出一个选中的异常怎么办?这是允许的。在这种情况下,
在接口中抛出
子句肯定会有所帮助。通过这种方式,您可以捕获并处理由Feign引发的异常。至少应该是这样

@RestControllerAdvice
public class ExceptionHandler {

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

}