Почему я могу написать универсальный оператор catch на C#, который ничего не делает?[дубликат]
-
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