10

可能重复:
为什么我不能在 C# 中捕获通用异常?

我最近一直在审查和编写断路器代码。以下方法编译,但从未输入 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
}
4

1 回答 1

5

它是一个错误https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=362422&wa=wsignin1.0

于 2010-01-08T18:23:26.270 回答