لماذا يمكنني كتابة بيان الصيد عام في 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