C# で何も行わない一般的な catch ステートメントを作成できるのはなぜですか?[重複]
-
19-09-2019 - |
質問
重複の可能性:
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
}
所属していません StackOverflow