Warum kann ich eine allgemeine catch-Anweisung in C # schreiben, die nichts tut? [Duplikat]
-
19-09-2019 - |
Frage
Mögliche Duplizieren:
Warum kann ich nicht eine allgemeine Ausnahme in C # fangen?
Ich habe die Überprüfung und das Schreiben Circuit Breaker Code vor kurzem. Das folgende Verfahren erstellt, aber der catch-Block wird nie eingegeben. Ich habe viel Arbeit-arounds, und dies ist nicht der einzige Weg, das richtige Verhalten (Filterung Ausnahmen) zu bekommen, aber ich bin neugierig , warum diese kompiliert und funktioniert nicht
public void AttemptCall<TException>(Action action)
where TException : Exception
{
try
{
action();
}
catch(TException e) // This block is never entered!
{
state.ActUponException(e);
throw;
}
}
Hier ist ein Test, den catch-Block der vorherigen Methode eingeben sollte.
[TestMethod]
public void Throw_an_exception()
{
circuitBreaker.AttemptCall<Exception>(() => throw new Exception());
// test the circuit breaker's state
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow