¿Por qué puedo escribir una declaración de captura genérica en C # que no hace nada? [duplicar]
-
19-09-2019 - |
Pregunta
Duplicar posible:
Por qué no puedo detectar una excepción genérica en C #?
He estado revisando y escribiendo Circuit Breaker código recientemente. El siguiente método compila, pero el bloque catch no se introduce. Tengo un montón de soluciones temporales, y esto no es la única manera de conseguir el comportamiento correcto (excepciones de filtrado), pero tengo curiosidad por qué esto compila y no funciona
public void AttemptCall<TException>(Action action)
where TException : Exception
{
try
{
action();
}
catch(TException e) // This block is never entered!
{
state.ActUponException(e);
throw;
}
}
Aquí es una prueba que debe entrar en el bloque catch del método anterior.
[TestMethod]
public void Throw_an_exception()
{
circuitBreaker.AttemptCall<Exception>(() => throw new Exception());
// test the circuit breaker's state
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow