2010-01-08 20 views
10

संभव डुप्लिकेट:
Why can’t I catch a generic exception in C#?मैं सी # में एक सामान्य पकड़ विवरण क्यों लिख सकता हूं जो कुछ भी नहीं करता है?

मैं की समीक्षा की गई है और Circuit Breaker कोड हाल ही में लेखन। निम्न विधि संकलित है, लेकिन पकड़ ब्लॉक कभी दर्ज नहीं किया गया है। मेरे पास बहुत सारे काम-आसपास हैं, और यह सही व्यवहार (फ़िल्टरिंग अपवाद) प्राप्त करने का एकमात्र तरीका नहीं है, लेकिन मैं उत्सुक हूं यह संकलित क्यों करता है और काम नहीं करता है!

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 
} 
+0

मैं कुछ भी कोड आप पोस्ट के साथ गलत नहीं दिख रहा। शायद राज्य के अंदर कुछ अजीब चल रहा है। ACTUponException (ई)। – Jimmy

+0

+ 1..good सवाल। –

+0

इसे किसी सामान्य प्रकार का उपयोग कैच फ़िल्टर या संकलित के रूप में संकलित और अस्वीकार नहीं करना चाहिए और रनटाइम अपवाद को पकड़ा और ठीक से संभाला जाना चाहिए। तथ्य यह है कि यह संकलित करता है लेकिन फिर अपवाद नहीं पकड़ता अजीब है। –

उत्तर

संबंधित मुद्दे

 संबंधित मुद्दे