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 に答える