我正在使用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”引发的异常,但是我无法做到这一点,它只会引发在此处引发的异常。
答案 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将负责抛出该异常。