我正在使用Resilience4j的TimeLimiter来控制RestTemplate调用的超时请求。如果response.getBody()为空,我会抛出一个自定义异常,但getorElseThrow中提供的Resilience4j总是会抛出异常。我如何在这里抛出一个自定义异常?
Try.ofCallable(methodWhichThrowsCustomException).getOrElseThrow(throwable -> {throw new ApplicationException(HttpStatus.REQUEST_TIMEOUT,
ErrorConstant.ERROR_CODE_REQUEST_TIMEOUT, ErrorConstant.ERROR_MESSAGE_TIME_OUT);
});
}这里我试图抛出"methodWhichThrowsCustomException“抛出的异常,但我不能这样做,它只抛出了这里抛出的异常。
发布于 2019-07-21 13:34:11
我不知道resilience4j,但我非常确定您使用getOrElseThrow是错误的。您最可能需要的语法是:
Try.ofCallable(methodWhichThrowsCustomException())
.getOrElseThrow(throwable -> new ApplicationException(HttpStatus.REQUEST_TIMEOUT, ErrorConstant.ERROR_CODE_REQUEST_TIMEOUT, ErrorConstant.ERROR_MESSAGE_TIME_OUT));请注意,你不需要在getOrElseThrow中抛出throw,你只需要返回新的异常来抛出,Vavr将负责抛出它。
https://stackoverflow.com/questions/56916396
复制相似问题