فئة وخصائص الاستثناء
الفئة Exception هي فئة أساسية حيث يتم توريث الاستثناءات منها. معظم مثيلات كائنات الاستثناء هي لفئة مشتقة ما من Exception، ولكن يمكنك طرح أي كائن مشتق من الفئة Object كاستثناء. لاحظ أن ليس كل اللغات تدعم طرح و التقاط الكائنات غير المشتقة من Exception. تقريباً في كل الحالات، من المستحسن طرح والتقاط كائنات Exception فقط.
تحتوي الفئة Exception علي العديد من الخصائص التي تجعل فهم الاستثناء أسهل. هذه الخصائص تضمين:
خاصية StackTrace.
تحتوي هذه الخاصية على متتبع لمكدس الذاكرة المؤقتة و الذي يمكن استخدامه لتحديد مكان حدوث الخطأ. يتضمن متتبع المكدس اسم ملف المصدر و رقم السطر في البرنامج إذا كانت معلومات تصحيح الأخطاء متوفرة.
خاصية InnerException.
يمكن استخدامها في إنشاء و المحافظة على سلسلة من الاستثناءات أثناء معالجة الاستثناء. يمكنك استخدام هذه الخاصية لإنشاء استثناء جديد يحتوي على استثناءات تم التقاطها مسبقاً. يمكن التقاط الاستثناء الأصلي قبل بواسطة الاستثناء الثاني في الخاصية InnerException، مما يسمح للتعليمات البرمجية من معالجة الاستثناء الثاني لفحص المعلومات الإضافية.
على سبيل المثال، افترض أن لديك أسلوب يقوم بقراءة ملف و بتنسيق البيانات. وتحاول التعليمة البرمجية القراءة من الملف ولكن تم طرح FileException. فسيقوم الأسلوب بالتقاط FileException ثم يطرح BadFormatException. في هذه الحالة، يمكن حفظ FileException في الخاصية InnerException من BadFormatException.
لتحسين قدرة المستدعي لتحديد سبب إلقاء استثناء، في بعض الأحيان يكون مطلوبًا من الأسلوب أن يقوم بالتقاط استثناء تم طرحه بواسطة روتين مساعد ومن ثم يقوم بطرح استثناء أكثر توضيحاً للخطأ الذي حدث. يمكن إنشاء استثناء جديدة وذات مدلول أكثر، حيث يمكن تعيين مرجع الاستثناء الداخلي إلي الاستثناء الأصلي. يمكن عندئذ طرح هذا الاستثناء ذو مدلول أفضل في المعنى إلي المستدعي. لاحظ أنه بواسطة هذه الوظيفة، يمكنك إنشاء سلسلة من الاستثناءات المرتبطة والتي تنتهي بأول استثناء تم طرحه.
خاصية Message.
توفر هذه الخاصية المزيد من التفاصيل حول السبب في حدوث الاستثناء. Message تكون باللغة المحددة بواسطة الخاصية Thread.CurrentUICulture من مؤشر الترابط الذي يطرح الاستثناء.
خاصية HelpLink.
تحفظ هذ الخاصية URL (أو URN) إلى ملف التعليمات الذي يوفر معلومات موسعة حول السبب في حدوث الاستثناء.
الخاصية Data.
هذه الخاصية هي IDictionary التي يمكنها الاحتفاظ بالبيانات العشوائية في زوج قيمة المفتاح.
معظم الفئات التي ترث من Exception لا تقوم بتنفيذ أعضاء إضافية أو توفر وظائف إضافية; فهي ببساطة ترث من Exception. وبذلك، يمكن العثور على المعلومات الأكثر أهمية بالنسبة للاستثناء في التسلسل الهرمي، و اسم الاستثناء، و المعلومات الموجودة في الاستثناء.
راجع أيضًا:
المبادئ
أفضل التدريبات علي معالجة الاستثناءات