Perché è possibile scrivere una dichiarazione di cattura generica in C # che non fa niente? [duplicare]
-
19-09-2019 - |
Domanda
Eventuali duplicati:
Perché non posso prendere un'eccezione generica in C #?
Sono stato rivedendo e la scrittura di Circuit Breaker il codice di recente. Il seguente metodo compila, ma il blocco catch non è mai entrato. Ho un sacco di work-around, e questo non è l'unico modo per ottenere il giusto comportamento (eccezioni di filtraggio), ma sono curioso perché questo compila e non funziona
public void AttemptCall<TException>(Action action)
where TException : Exception
{
try
{
action();
}
catch(TException e) // This block is never entered!
{
state.ActUponException(e);
throw;
}
}
Ecco un test che dovrebbe entrare nel blocco catch del metodo precedente.
[TestMethod]
public void Throw_an_exception()
{
circuitBreaker.AttemptCall<Exception>(() => throw new Exception());
// test the circuit breaker's state
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow