جدول المحتويات:
التعريف - ماذا تعني معالجة الاستثناء؟
معالجة الاستثناءات هي آلية يتم فيها استخدام بنية البرمجة لفصل الخطأ واعتراضه ومعالجته باستمرار أثناء تنفيذ التطبيق. تم تصميم وقت تشغيل اللغة العامة (CLR) من .NET Framework لاستخدام نموذج معالجة استثناء يستند إلى كائنات الاستثناء وكتل التعليمات البرمجية المحمية.
فيما يلي ميزات آلية معالجة الاستثناء المطبقة في CLR:
أ) يمكن أن يكون لكل لغة مواصفاتها الخاصة للتعامل مع الاستثناءات دون أي قيود
ب) يتم إنشاء استثناءات ومعالجتها بغض النظر عن اللغة المستخدمة ونوع الكود (المدار أو غير المدار)
ج) يمكن طرح استثناءات عبر حدود العملية أو الماكينة
يشرح Techopedia معالجة الاستثناءات
وقت تشغيل .NET يطرح استثناءات ككائنات مشتقة من فئة System.Exception التي تحتوي على تفاصيل الخطأ ، بما في ذلك الرسالة وسطر التعليمات البرمجية حيث حدث الخطأ ، وما إلى ذلك. يُستخدم الإنشاء "try..catch..finally" لمعالجة الاستثناءات. في حين أن كتل "try" (حيث يتوقع حدوث استثناءات) و "catch" (حيث يتم التعامل مع الاستثناءات) تعتبر إلزامية ، فإن كتلة "أخيرًا" (حيث يتم تنفيذ التعليمات البرمجية في أي حال) اختيارية.
عند مقارنة معالجة الأخطاء المطبقة باستخدام الطرق التقليدية - مثل استخدام رمز الإرجاع كما هو الحال في عبارات طراز كائن المكون (COM) و "الانتقال إلى" ، كما هو الحال في Visual Basic ، وما إلى ذلك - فإن الفوائد الرئيسية للاستثناءات في .NET يتم تعويضها جميعًا حالات الفشل ، وإلغاء عملية التحقق من قيمة الإرجاع واستخدامها (إذا كانت غير صالحة) في التطبيقات ، والاستخدام في السيناريوهات التي لا توجد فيها قيمة إرجاع مثل المنشئات ، وزيادة الموثوقية والأداء الأفضل.
بينما توفر Java استثناءات "محددة" تساعد في منع حدوث استثناءات غير معالج أثناء التحويل البرمجي ، لا يمكن استخدامها للأخطاء التي لا يمكن إصلاحها. تختلف معالجة الاستثناءات في C ++ عن تلك الموجودة في .NET من خلال عدم وجود كتلة "أخيرًا" لتنظيف الموارد ودون أي قيود لنوع الاستثناء.