-1

我有以下代码:

 var policyResult = await _circuitBreakerPolicy.ExecuteAndCaptureAsync(async () =>
     {
         return await  configuredTaskAwaitable;
     });

return policyResult.Result;

当断路器处于打开状态时,结果简单地为空,不会抛出异常。如果电路打开,它不应该抛出异常吗?

4

1 回答 1

4

.ExecuteAndCaptureAsync()旨在捕获抛出policyResult.FinalException属性中的任何异常。你应该在那里找到异常。(该policyResult.Result属性是null(严格地说:default(TResult)对于任何东西TResult),因为确实没有获得任何结果。)

如果您希望通过策略执行以保留最初抛出的任何异常而不是捕获它,请使用直接.ExecuteAsync(...)

于 2017-04-05T07:11:51.113 回答