아무것도하지 않는 C#에 일반적인 캐치 문을 쓸 수있는 이유는 무엇입니까? [복제하다

StackOverflow https://stackoverflow.com/questions/2029650

문제

가능한 복제 :
C#에서 일반적인 예외를 포착 할 수없는 이유는 무엇입니까?

나는 검토하고 글을 쓰고있다 회로 차단기 최근 코드. 다음 방법은 컴파일하지만 캐치 블록은 결코 입력되지 않습니다. 나는 많은 노력을 가지고 있으며, 이것이 올바른 행동 (필터링 예외)을 얻는 유일한 방법은 아니지만 궁금합니다. 이것이 컴파일되고 작동하지 않는 이유!

public void AttemptCall<TException>(Action action) 
    where TException : Exception
{
    try
    {
        action();
    }
    catch(TException e)  // This block is never entered!
    {
         state.ActUponException(e);
         throw;
    }
}

다음은 이전 방법의 캐치 블록을 입력 해야하는 테스트입니다.

[TestMethod]
public void Throw_an_exception()
{
    circuitBreaker.AttemptCall<Exception>(() => throw new Exception());
    // test the circuit breaker's state
}
도움이 되었습니까?
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top