هرمية التسلسل
يوجد نوعان من الأذونات: الاستثناءات التي تم إنشاؤها بواسطة برنامج تنفيذ و استثناءات تم إنشائها بواسطة لغات وقت التشغيل الشائعة. بالإضافة إلى ذلك، يوجد تسلسل هرمي للاستثناءات التي يمكن طرحها بواسطة أحد تطبيقات أو وقت التشغيل.
الاستثناء هو الفئه الاساسيه للاستثناءات. ترث العديد من الفئات الاستثناء مباشرة من استثناء ، بما في ذلك ApplicationException و SystemException. هذه هي الفئتين الأساسيتين تقريباً لكل استثناءات وقت التشغيل.
معظم الاستثناءات المشتقه مباشرةً من استثناء لا تضيف وظيفه ل استثناء فئه. على سبيل المثال، فئة InvalidCastException تسلسل هرمياً كما يلي:
Object الاستثناء SystemException InvalidCastException
وقت التشغيل يطرح فئة مشتقة مناسبة SystemException عند حدوث خطأ. تنتج هذه الأخطاء من فشل تدقيق وقت التشغيل (مثل أخطاء مهلة منضم لصفيف) و يمكن أن يحدث أثناء تنفيذ أي أسلوب. إذا كنت تقوم بتصميم تطبيق إنشاء الذي يقوم بإنشاءاستثناءات جديدة يجب أن يتم اشتقاق هذه الاستثناءات من Exception فئه. لا يوصى بذلك التقاط SystemExceptionولا يكون ذلك برمجة تدريب عمليه جيده لإلقاء SystemException في التطبيق الخاص بك.
استثناءات أخطر — تلك التي تطرح بواسطة وقت التشغيل أو في شروط غير قابله لاعاده الانشاء — تتضمن ExecutionEngineException ، StackOverflowException ، و OutOfMemoryException.
اشتقاق استثناءات التي تحدث في داخل عمليه SystemException وهي إضافية ملحقة من قبل ExternalException. على سبيل المثال، COMExceptionهو طرح أثناء العمليات إمكانية التشغيل المتداخل COM الاستثناء و مشتقة من من ExternalException. Win32ExceptionوSEHExceptionينحدر أيضا منExternalException.
التسلسل الهرمي لاستثناءات وقت التشغيل
يوجد لوقت التشغيل مجموعة أساسية من استثناءات مشتقه من SystemException يطرح عند تنفيذ الإرشادات الفردية. يسرد الجدول التالي بشكل هرمي الإستثناءات القياسية المتوفرة من قبل وقت التشغيل و الشروط التي يجب إنشاء فئه مشتقة في نطاقها.
نوع الاستثناء |
نوع أساس |
الوصف |
المثال |
---|---|---|---|
الكائن |
نوع اساس لكل الإستثناءات. |
بلا (استخدام فئة مشتقة لهذا الإستثناء). |
|
الاستثناء |
فئه الاساس لجميع أخطاء وقت التشغيل الذي تم إنشاؤه. |
بلا (استخدام فئة مشتقة لهذا الإستثناء). |
|
SystemException |
طرح بواسطة وقت التشغيل فقط عندما يكون هناك صفيف مفهرسة بشكل غير صحيح. |
فهرسة صفيف خارج النطاق الصالح الخاص بها: arr[arr.Length+1] |
|
SystemException |
تطرح بواسطة وقت التشغيل فقط عند الإشارة لكائن فارغ. |
object o = null; o.ToString(); |
|
طرح بواسطة وقت التشغيل فقط عند الوصول إلى الذاكرة غير صحيحه. |
يحدث في اثناء علميه و لتعليمات برمجية غير المُدارة أو تعليمات برمجية مداره غير آمنة و مؤشر غير صالح. |
||
SystemException |
طرح بواسطة أساليب في حالة غير صالحة. |
استدعاء Enumerator.GetNext() بعد إزالة Item من المجموعة الأساسية. |
|
SystemException |
نوع اساس لكل إستثناءات المجادله. |
بلا (استخدام فئة مشتقة لهذا الإستثناء). |
|
ArgumentException |
طرح بواسطة الطرق لا تسمح وسيطة بأن تكون فارغة. |
String s = null; "Calculate".IndexOf (s); |
|
ArgumentException |
طرح بواسطة أساليب تحقق من أن الوسيطات في نطاق معطى. |
String s = "string"; s.Chars[9]; |
|
SystemException |
الفئة الأساسية للاستثناءات التي تحدث أو تستهدف في بيئات خارج وقت التشغيل. |
بلا (استخدام فئة مشتقة لهذا الإستثناء). |
|
ExternalException |
استثناء تغليف معلومات COM HRESULT. |
استخدام في COM interop. |
|
ExternalException |
استثناء تغليف Win32 بناء الاستثناء لمعالجة المعلومات. |
استخدام في interop برمجية غير مُدارة. |
راجع أيضًا:
المبادئ
أفضل التدريبات علي معالجة الاستثناءات