المسارات
/
C#
C#
/
المنهج
/
الاستثناءات المعرّفة من المستخدم
ال

الاستثناءات المعرّفة من المستخدم في C#

1 تمرين

نبذة عن الاستثناءات المعرّفة من المستخدم

الاستثناء المُعرَّف من المستخدم هو أي صنف يُعرَّف في الكود ويشتق من System.Exception. وهو يخضع لجميع قواعد وراثة الأصناف، لكن المترجم وبيئة تشغيل اللغة يعاملان هذه الأصناف معاملة خاصة تسمح بطرح نسخها والتقاطها خارج المسار الطبيعي للتحكم، كما نوقش في تمرين exceptions. ويمكن استخدام الاستثناءات المُعرَّفة من المستخدم في كل الأوجه مثل استثناءات وقت التشغيل واستثناءات مكتبة الفئات الأساسية من Microsoft.

هذه المعاملة الخاصة تنطبق على الأصناف المشتقة من Exception فقط. فلا يمكنك طرح نسخ من أي نوع آخر.

وغالبًا ما تُستخدم الاستثناءات المُعرَّفة من المستخدم لحمل معلومات إضافية، مثل رسالة وبيانات أخرى ذات صلة، لتكون متاحة لإجراءات الالتقاط. ويمكن بعد ذلك تسجيل هذه المعلومات في السجلات، أو عرضها على المستخدم، أو استخدامها في عملية إعادة محاولة. ولدى System.Exception أعضاء بيانات ملائمة ومُنشئات مناسبة لحمل رسالة والاستثناء "الداخلي".

بالاصطلاح، تنتهي أسماء أصناف الاستثناءات بكلمة "Exception"، مثل MyTerribleException.

وبينما يُعد استخدام الاستثناءات المُعرَّفة من المستخدم لتغليف استثناءات طرف ثالث وتحسينها نمطًا شائعًا، فإن النصيحة العامة هي ألا تستخدمها خارج هذه الحالة بإفراط في كودك الخاص. فهي تُعتبر نمطًا مضادًا. وثمة اعتراضات على هذا الرأي، ويمكنك الاطلاع على وجهتي النظر في منشور Stack Exchange هذا.

وهذا المقال مقدمة جيدة للاستثناءات المُعرَّفة من المستخدم.

وضمن إرشاداتهم حول إنشاء الاستثناءات وطرحها، يوصي فريق .NET بأن يكون للاستثناءات المُعرَّفة من المستخدم عدد من المُنشئات الملائمة. وفي معظم الحالات تكون التركيبة الموضحة أدناه مناسبة.

public class IncompleteExerciseException : System.Exception
{
    public IncompleteExerciseException() : base() { }
    public IncompleteExerciseException(string message) : base(message) { }
    public IncompleteExerciseException(string message, System.Exception inner) : base(message, inner) { }
}
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الاستثناءات المعرّفة من المستخدم