الاستثناءات في مدارة عمليات جزئية

في.NET Framework الإصدار 2.0، وقت تشغيل اللغة العامة تسمح معظم الاستثناءات غير المعالجة في عمليات جزئية إلى المتابعة بشكل طبيعي. في معظم الحالات وهذا يعني أن ‏‏ استثناء غير معالج يؤدي إلى ينهي تطبيق.

ملاحظةملاحظة

هذا هو حدوث تغيير كبير من إصدارات.NET Framework 1.0 و 1.1، والتي توفر backstop للعديد من الاستثناءات غير المعالجة — على سبيل المثال، unhandled الاستثناءات في تجمع مؤشرات الترابط عمليات جزئية.راجع تغيير من إصدارات السابق لاحقاً في هذا الموضوع.

اللغة الشائعة وقت التشغيل يوفر backstop لبعض الاستثناءات غير المعالجة التي يتم استخدامها للتحكم في تدفق البرنامج:

  • ThreadAbortExceptionهو تم طرح في مؤشر ترابط لأن Abortتم استدعاء.

  • AppDomainUnloadedExceptionطرح في مؤشر ترابط بسبب إلغاء تحميل هو مجال تطبيق تنفيذ مؤشر الترابط.

  • اللغة الشائعة وقت التشغيل أو إنهاء عملية مضيف مؤشر ترابط بطرح استثناء داخلي.

إذا كان أي من هذه ‏‏ استثناءات هي unhandled في عمليات جزئية التي تم إنشاؤها بواسطة وقت تشغيل اللغة العامة، ‏‏ استثناء إنهاء مؤشر ترابط، ولكن وقت تشغيل اللغة العامة لا تسمح ‏‏ استثناء إلى المتابعة بشكل أكبر.

إذا كانت هذه الاستثناءات غير المعالجة في مؤشر ترابط الرئيسي أو عمليات جزئية التي أدخلت وقت التشغيل من تعليمات برمجية غير مُدارة، فإنها متابعة بشكل طبيعي، مما يتسبب في حالة إنهاء تطبيق.

ملاحظةملاحظة

It هو possible for the وقت التشغيل إلى throw an unhandled exception before any تعليمات برمجية مُدارة has had a chance إلى يثّبت إستثناء handler.وعلى الرغم من تعليمات برمجية المدارة قد لا توجد فرصة لمعالجة مثل استثناء، ‏‏ استثناء هو المسموح بها للمتابعة بشكل طبيعي.

يتعرض لمؤشر الترابط التشعبي مشاكل أثناء تطوير

عندما يتم السماح بمؤشرات ترابط إلى تفشل بصمت، دون إنهاء تطبيق، مشاكل خطيرة في برمجة الانتقال التي لم يتم كشفها. Th هو هو مشكلة معينة للخدمات والتطبيقات الأخرى التي تقوم بتشغيل لتوسيع نقاط. كـ فشل مؤشرات الترابط، والولاية البرنامج تدريجيا أصبح تالفاً. قد يقل أداء تطبيق أو قد إنهاء تطبيق.

السماح باستثناء غير معالج في عمليات جزئية إلى المتابعة بشكل طبيعي، حتى قام النظام التشغيل بإنهاء البرنامج، كشف مثل هذه المشكلات أثناء التطوير والاختبار. تقارير الخطأ حول برنامج terminations دعم التصحيح.

تغيير من الإصدارات السابقة

ويتعلق تغيير الأكثر أهمية لمؤشرات الترابط التي تمت إدارتها. في إصدارات.NET Framework 1.0 و 1.1، يوفر وقت تشغيل اللغة العامة backstop استثناء غير معالج في الحالات التالية:

  • هناك هو لا يوجد شيء مثل كاستثناء غير معالج تشغيل مؤشر ترابط تجمع مؤشر ترابط. عندما يطرح مهمة إستثناء لم يعالج، تتبع مكدس ‏‏ استثناء إلى وحدة التحكم بطباعة وقت التشغيل وثم تقوم بإرجاع مؤشر ترابط بتجمع مؤشرات الترابط.

  • هناك شيء لا يوجد مثل كاستثناء غير معالج تشغيل مؤشر ترابط تم إنشاؤه مع Startأسلوب Threadفئة. عند يطرح مثل مؤشر ترابط بتشغيل تعليمات برمجية إستثناء أنه أدى hوle لا، قم بطباعة وقت التشغيل تتبع مكدس ‏‏ استثناء إلى وحدة التحكم و ثم إنهاء مؤشر الترابط أمان.

  • هناك هو لا يوجد شيء مثل كاستثناء غير معالج تشغيل مؤشر ترابط أداة الإنهاء. عندما يطرح أداة الإنهاء استثناء أنه أدى hوle لا، قم بطباعة وقت التشغيل تتبع مكدس ‏‏ استثناء إلى وحدة التحكم و ثم يسمح مؤشر الترابط أداة الإنهاء لاستئناف تشغيل أداة الإنهاءs.

الأمامية أو الخلفية حالة مدارة لا يؤثر على مؤشر ترابط هذا سلوك.

للاستثناءات غير المعالجة تشغيل عمليات جزئية التي تنشأ في التعليمات البرمجية غير المدارة، الفرق هو أكثر دقيق. الحوار JIT يرفق وقت التشغيل preempts مربع حوار النظام التشغيل للاستثناءات التي تمت إدارتها أو استثناءات الأصلية تشغيل عمليات جزئية التي تم تمريرها من خلال تعليمات برمجية الأصلية. إنهاء العملية في الجميع الحالات.

ترحيل تعليمات برمجية

في عامة، سيتم تغيير كشف المشاكل programmفيg غير معروف سابقا بحيث يمكن إصلاحه. في بعض الحالات، على الرغم من ذلك، المبرمجين قد تم أخذ فوائد backsإلىp وقت التشغيل، على سبيل المثال إلى إنهاء عمليات جزئية. حسب تشغيل situati تشغيل، يجب أن cتشغيلsider تشغيل e migrati التالية تشغيل استراتيجيات:

  • إعادة هيكلة التعليمة البرمجية حتى إنهاء مؤشر ترابط أمان عند إشارة هو التي تم تلقيها.

  • استخدام Thread.Abortأسلوب إلى إحباط مؤشر الترابط.

  • إذا كان مؤشر ترابط يجب إيقاف حيث يمكن لإنهاء عملية متابعة، تأكد مؤشر الترابط مؤشر ترابط الخلفية حتى أنه هو تم إنهاؤها في إنهاء العملية بشكل تلقائي.

في الجميع الحالات، استراتيجية اتباع إرشادات التصميم للاستثناءات. انظر إرشادات التصميم الخاصة استثناءات

توافق التطبيق يؤشر

كـ meكـure توافق مؤقتة، المسؤولين يمكن وضع علامة توافق في <runtime>مقطع في ملف تكوين تطبيق. يؤدي هذا إلى اللغة الشائعة وقت التشغيل للعودة إلى سلوك الإصدار 1.0 و 1.1.

<legacyUnhandledExceptionPolicy enabled="1"/>

يمنع مضيف

في.NET Framework الإصدار 2.0، يمكن لمضيف غير مدار استخدام الواجهة ICLRPolicyManager في API استضافة إلى تجاوز النهج الاستثناء الافتراضي unhandled من وقت تشغيل اللغة العامة. ICLRPolicyManager::SetUnhandledExceptionPolicy الدالة هو يستخدم لتعيين نهج للاستثناءات غير المعالجة.

راجع أيضًا:

موارد أخرى

مدارة مؤشر الترابط التشعبي أساسيات