如何从Resilience4j TimeLimitter引发自定义异常?

时间:2019-07-06 17:50:04

标签: java spring-boot exception vavr resilience4j

我正在使用resilience4j的TimeLimiter来控制RestTemplate调用的超时请求。如果response.getBody()为null,但我会抛出一个自定义异常,但是,getorElseThrow中提供的resilience4j始终会抛出异常。我如何在这里抛出自定义异常?

Try.ofCallable(methodWhichThrowsCustomException).getOrElseThrow(throwable -> {throw new ApplicationException(HttpStatus.REQUEST_TIMEOUT,
                    ErrorConstant.ERROR_CODE_REQUEST_TIMEOUT, ErrorConstant.ERROR_MESSAGE_TIME_OUT);
        });
    }

在这里,我正在尝试引发“ methodWhichThrowsCustomException”引发的异常,但是我无法做到这一点,它只会引发在此处引发的异常。

1 个答案:

答案 0 :(得分:0)

我不知道resilience4j,但是我很确定您使用的是getOrElseThrow错误。您最可能想要的语法是:

Try.ofCallable(methodWhichThrowsCustomException())
   .getOrElseThrow(throwable -> new ApplicationException(HttpStatus.REQUEST_TIMEOUT, ErrorConstant.ERROR_CODE_REQUEST_TIMEOUT, ErrorConstant.ERROR_MESSAGE_TIME_OUT));

请注意,您不需要throw内的getOrElseThrow,只需要返回新的异常即可抛出,Vavr将负责抛出该异常。

相关问题