Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

استثناءات مخصصة

جزء من قسم المنطق وتدفق التنفيذ في رحلة C# على Coddy. الدرس 29 من 66.

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

لإنشاء استثناء مخصص، عرّف فئة ترث من Exception. تعني الوراثة أن فئتك الجديدة تكتسب تلقائيًا كل سلوك الفئة الأصلية، وهي في هذه الحالة Exception، مع السماح لك بإضافة الوظائف أو تخصيصها. تعني الصياغة class MyException : Exception أن MyException extends Exception.

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception: يرث من الفئة المضمّنة Exception.
: base(...): يستدعي مُنشئ الفئة الأصل Exception لتعيين رسالة الخطأ.
يوفّر المُنشئ الأول رسالة افتراضية عند عدم توفير أي رسالة.
يقبل المُنشئ الثاني custom message حتى يتمكّن المستدعون من وصف الخطأ بالتفصيل.

يمكنك الآن طرح الاستثناء المخصص الخاص بك عند الحاجة:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

عند تنفيذ هذا الكود باستخدام age negative، سيطرح exception مخصصًا مع message "Age cannot be negative."

ملاحظة: في التمارين الخاصة بهذا الدرس، تُرجع دوال التحقق true عندما يكون الإدخال valid، وتطرح exception مخصصًا عندما لا يكون كذلك. ونظرًا إلى أن exception غير المعالج يوقف التنفيذ فورًا، تحتاج حالات الاختبار فقط إلى التحقق من مسار إرجاع true: إذ إن exception نفسه هو النتيجة القابلة للملاحظة للمدخلات غير الصالحة.

challenge icon

التحدي

متوسط

أنشئ فئة استثناء custom باسم InvalidTemperatureException ترث من Exception. يجب أن تحتوي على:

  1. منشئ افتراضي يعيّن message بقيمة "Temperature is not valid."
  2. منشئ يقبل message custom.

ثم نفّذ أسلوبًا باسم checkTemperature يقوم بما يلي:

  • يأخذ معلمة عددًا صحيحًا تمثّل درجة حرارة مئوية
  • يرمي InvalidTemperatureException مع message "Temperature below absolute zero!" إذا كانت درجة الحرارة أقل من -273
  • يعيد true إذا كانت درجة الحرارة valid

جرّب بنفسك

using System;

class CheckTemperature
{
    // أنشئ فئة الاستثناء المخصصة الخاصة بك هنا
    
    public static bool checkTemperature(int celsius)
    {
        // اكتب الكود الخاص بك هنا
    }
    
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C# عبر الإنترنت