c# - यदि दोनों पकड़ते हैं और अंत में ब्लॉक फेंकते हैं तो क्या होता है?




java .net (4)

HI नममन मुझे लगता है कि आप का उत्तर गलत है मैंने इसे विंडोज़ के मूल्यांकन में परीक्षण किया है, मैंने पाया कि क्या यू नीचे एक प्रोग्राम की तरह लिखता है

try
{
    string s = "hu";
    int i = int.Parse(s);
}
catch (Exception ex)
{
    string s = "hu";
    int i = int.Parse(s);
    throw new Exception();
}
finally
{
    MessageBox.Show("hi");
}

और यह अंत में बहाना नहीं होगा,

यदि दोनों पकड़ते हैं और अंत में ब्लॉक फेंकते हैं तो क्या होता है?


आखिरी अपवाद फेंक दिया गया है।


जब एक अपवाद को पकड़ता है, तो अंत में ब्लॉक चलाया जाएगा और फिर एक अपवाद के साथ बाहर निकल जाएगा। यदि अंत में ब्लॉक एक अपवाद फेंकता है, तो ब्लॉक एक अपवाद के साथ बाहर निकल जाएगा।


जब finally ब्लॉक एक अपवाद फेंकता है, तो यह प्रभावी रूप से catch ब्लॉक से फेंके गए अपवाद को छिपा देगा और अंततः एक फेंक दिया जाएगा। इसलिए यह महत्वपूर्ण है कि पकड़े जाने पर अपवादों को लॉग इन करें, या यह सुनिश्चित करें कि अंत में ब्लॉक खुद को एक अपवाद नहीं फेंकता है, अन्यथा आप अपवादों को फेंक दिया जा सकता है जो कि कड़ा हो जाता है और कभी नहीं देखा जाता है।





try-finally