2010-01-08 20 views
10

Olası Çoğalt:
Why can’t I catch a generic exception in C#?Neden C# 'de hiçbir şey yapmadan genel bir catch ifadesi yazabilirim?

ben gözden geçirilmesi ve son zamanlarda Circuit Breaker kod yazmadan edilmiştir. Aşağıdaki yöntem derlenir, ancak yakalama bloğu hiçbir zaman girilmez. Çok fazla iş çevrem var ve bu doğru davranışı elde etmenin tek yolu değil (filtreleme istisnaları), ama merak ediyorum neden bu derleme yapıyor ve çalışmıyor! İşte

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

önceki yöntemin catch bloğunu girmelidir bir testtir.

[TestMethod] 
public void Throw_an_exception() 
{ 
    circuitBreaker.AttemptCall<Exception>(() => throw new Exception()); 
    // test the circuit breaker's state 
} 
+0

Sana yayınlanan koduyla yanlış bir şey görmüyorum. Belki de devlet içinde tuhaf bir şey oluyor. AtakononException (e). – Jimmy

+0

+ 1. iyi bir soru. –

+0

Ya yakalama filtresi VEYA derleme olarak genel bir tür kullanarak derleme ve izin vermemeli ve çalışma zamanı özel durumunun düzgün şekilde yakalanıp işlenmesini sağlamalıdır. Derleme ama sonra istisna yakalamak gerçeği tuhaftır. –

cevap

İlgili konular