संभव डुप्लिकेट सी # में ब्लॉक:
Finally Block Not Running??अंत में
मैं अंत में सी # में ब्लॉक से संबंधित प्रश्न है। अब तक
public class MyType
{
public void foo()
{
try
{
Console.WriteLine("Throw NullReferenceException?");
string s = Console.ReadLine();
if (s == "Y")
throw new NullReferenceException();
else
throw new ArgumentException();
}
catch (NullReferenceException)
{
Console.WriteLine("NullReferenceException was caught!");
}
finally
{
Console.WriteLine("finally block");
}
}
}
class Program
{
static void Main(string[] args)
{
MyType t = new MyType();
t.foo();
}
}
मैं के रूप में के रूप में मैं जानता हूँ कि, अंत में deterministicly चलाने के लिए लगता है कि ब्लॉक, चाहे या नहीं एक अपवाद उत्पन्न हुआ था: मैं एक छोटा सा नमूना कोड लिखा था। अब, यदि उपयोगकर्ता "वाई" में प्रवेश करता है - NullReferenceException फेंक दिया जाता है, तो निष्पादन कैच घड़ी पर जाता है और फिर अंततः ब्लॉक की अपेक्षा करता है। लेकिन अगर इनपुट कुछ और है - ArgumentException फेंक दिया गया है। इस अपवाद को पकड़ने के लिए कोई उपयुक्त पकड़ ब्लॉक नहीं है, इसलिए मैंने सोचा कि निष्पादन अंततः ब्लॉक को ले जाना चाहिए - लेकिन यह नहीं करता है। क्या कोई मुझे बता सकता है क्यों?
धन्यवाद हर कोई :)
संभावित डुप्लिकेट: http://stackoverflow.com/questions/4193493/finally-block-not-running –
मैंने कोड की कोशिश की है, और यह अंततः – SWeko
अपेक्षित ब्लॉक में प्रवेश करता है क्या आप स्पष्ट कर सकते हैं कि आपका क्या मतलब है ' मैंने सोचा कि निष्पादन को आखिरकार ब्लॉक को स्थानांतरित करना चाहिए - मुझे लगता है कि नियंत्रण दोनों मामलों में अंततः चल रहा है - है ना? – InSane