有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java什么异常是假的。RetryableException包装?

文档告诉我,HTTP 503响应被认为是可重试的,一些例外情况也是如此

根据我的经验,我知道那是假的。RetryableException包装java。网ConnectException和其他j.n.SocketException,但我看不出这在哪里发生

其他的像java。网SocketTimeoutException由Faign包装。RetryableException


共 (2) 个答案

  1. # 1 楼答案

    您可以在feign.SynchronousMethodHandler中检查代码:

    try {
      response = client.execute(request, options);
    } catch (IOException e) {
      if (logLevel != Logger.Level.NONE) {
        logger.logIOException(metadata.configKey(), logLevel, e, elapsedTime(start));
      }
      throw errorExecuting(request, e);
    }
    
    
    static FeignException errorExecuting(Request request, IOException cause) {
      return new RetryableException(
          format("%s executing %s %s", cause.getMessage(), request.httpMethod(), request.url()),
          request.httpMethod(),
          cause,
          null);
    }
    

    所以,如果异常扩展了IOException,那么它将被包装

  2. # 2 楼答案

    在国外,IOExceptions是唯一自动包装的异常。如果还有其他情况需要调用Feign的重试功能,请创建一个ErrorDecoder并返回一个RetryableException。有关示例,请参见Feign Documentation