Por que eu posso escrever uma instrução catch genérico em C # que não faz nada? [duplicado]
-
19-09-2019 - |
Pergunta
Duplicate possíveis:
Por que não posso pegar uma exceção genérica em C #?
Eu tenho estado a rever e escrever Circuit Breaker código recentemente. O método a seguir compila, mas o bloco catch não é inserido. Tenho muitas soluções alternativas, e esta não é a única maneira de obter o comportamento correto (filtragem exceções), mas estou curioso Por que isso compila e não funciona !
public void AttemptCall<TException>(Action action)
where TException : Exception
{
try
{
action();
}
catch(TException e) // This block is never entered!
{
state.ActUponException(e);
throw;
}
}
Aqui é um teste que deve entrar no bloco catch do método anterior.
[TestMethod]
public void Throw_an_exception()
{
circuitBreaker.AttemptCall<Exception>(() => throw new Exception());
// test the circuit breaker's state
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow