ترتيب كومة معالجة الاستثناء إطارات على مكدس الاستدعاءات

StackOverflow https://stackoverflow.com/questions/1431861

سؤال

ما هو الترتيب الذي يتم دفع إطارات معالجة الاستثناء مكدس على مكدس الاستدعاءات في القول C #. إذا كان لدي طريقة:

private void MyMethod() {
  try {
    DoSomething();  
  }
  catch (Exception ex)
  {
    //Handle
  }
}

هل إطار مكدس منفصل إنشاء كل معالج استثناء على النحو التالي؟

DoSomething stackframe<br/>
Exception stackframe<br/>
MyMethod stackframe<br/>

وOR

DoSomething stackframe<br />
MyMethod stackframe<br />
Exception stackframe<br />

وOR

وشيء آخر؟

هل كانت مفيدة؟

المحلول

لا، مضيفا معالج استثناء لا يضيف إطار جديد إلى المكدس المكالمة. انها مجرد يضيف المعلومات المناسبة بحيث عندما يتم طرح استثناء، على كل مستوى من الدعوة كومة الإطار يمكن العثور على معالج المناسب لهذا الاستثناء (اذا كان هناك <م> هو معالج المناسب).

وانها قليلا مثل جمع القمامة، حيث في أي لحظة إعدام GC يمكن أن تعمل بها والتي المتغيرات المحلية لا يزال ينبغي الاعتماد الجذور كما القيادة العامة - أساسا هناك أكثر إلى وسيلة من قانون قابل للتنفيذ نفسه:)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top