我最近一直在审核并编写 Circuit Breaker 代码。编译以下方法,但永远不会输入catch块。我有很多解决方法,这不是获得正确行为(过滤异常)的唯一方法,但我很好奇为什么这会编译并且不起作用!
public void AttemptCall<TException>(Action action)
where TException : Exception
{
try
{
action();
}
catch(TException e) // This block is never entered!
{
state.ActUponException(e);
throw;
}
}
这是一个应该进入上一个方法的catch块的测试。
[TestMethod]
public void Throw_an_exception()
{
circuitBreaker.AttemptCall<Exception>(() => throw new Exception());
// test the circuit breaker's state
}
答案 0 :(得分:5)