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

الكلمة المفتاحية 'throw'

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

أحيانًا تحتاج إلى الإشارة إلى حدوث error في التعليمات البرمجية الخاصة بك، بدلًا من مجرد التقاط exceptions التي تطرحها الدوال الأخرى. تتيح لك الكلمة المفتاحية throw تشغيل استثناء يدويًا عندما يكتشف برنامجك مشكلة.

يمكنك طرح أنواع مختلفة من القيم كاستثناءات - أعداد صحيحة، أو سلاسل نصية، أو حتى كائنات مخصّصة. إليك الصياغة الأساسية:

if (someErrorCondition) {
    throw "Error message";  // يرمي سلسلة حرفية
}

عند استخدام throw، يتوقف البرنامج فورًا عن تنفيذ الدالة الحالية ويبحث عن كتلة catch يمكنها التعامل مع القيمة المُلقاة. وهذا مفيد بشكل خاص للتحقق من صحة input أو فحص الشروط التي لا ينبغي أن تحدث أثناء التنفيذ العادي للبرنامج.

إليك مثالًا عمليًا على إطلاق استثناء عند اكتشاف إدخال غير صالح:

void checkAge(int age) {
    if (age < 0) {
        throw "Age cannot be negative!";
    }
    std::cout << "Age is valid: " << age << std::endl;
}

تمنحك الكلمة المفتاحية throw التحكم في وقت الإبلاغ عن الأخطاء وكيفيته في برامجك، مما يجعل دوالك أكثر متانة وقابلية للتنبؤ عند التعامل مع الشروط غير الصالحة.

challenge icon

التحدي

سهل

أنشئ برنامجًا ينفّذ validation للمدخلات باستخدام الكلمة المفتاحية throw لتشغيل exceptions يدويًا عند اكتشاف شروط غير صالحة. سيختبر هذا التحدي مدى فهمك لكيفية استخدام throw للإشارة إلى الأخطاء في الدوال function الخاصة بك.

سيتم توفير المدخلات التالية:

  • قيمة من نوع string تمثل اسم المستخدم الذي اختاره المستخدم (قد يكون هذا السطر فارغًا)
  • عدد صحيح age يمثل عمر المستخدم

يجب أن يقوم برنامجك بما يلي:

  1. إنشاء function باسم validateUser تأخذ قيمة من نوع string وعددًا صحيحًا كمعاملين
  2. داخل function، التحقق مما إذا كان اسم المستخدم فارغًا (طوله 0)
  3. إذا كان اسم المستخدم فارغًا، استخدم throw لإطلاق السلسلة النصية "Username cannot be empty"
  4. التحقق مما إذا كان العمر أقل من 13
  5. إذا كان العمر أقل من 13، استخدم throw لإطلاق السلسلة النصية "Age must be at least 13"
  6. إذا نجحت عمليتا validation، اطبع "User validation successful"
  7. في function الرئيسية main، استدعِ validateUser باستخدام قيم الإدخال
  8. استخدم كتلة try لاستدعاء function وكتلة catch لمعالجة أي exceptions نصية تم إطلاقها

استخدم تنسيق الإخراج الدقيق التالي:

عند نجاح validation:

User validation successful

عند حدوث أخطاء في validation:

Validation error: [error_message]

تذكّر أنه عند استخدام throw، يتوقف البرنامج فورًا عن تنفيذ function الحالية ويبحث عن كتلة catch مطابقة. يجب أن تحدد كتلة catch النوع const char* للتعامل مع السلاسل النصية الحرفية التي تم إطلاقها. إذا فشل التحقق الأول، فستطلق function استثناءً ولن تتابع التحقق من الشرط الثاني.

جرّب بنفسك

#include <iostream>
#include <string>
using namespace std;

int main() {
    // اقرأ الإدخال
    string username;
    int age;
    getline(cin, username);
    cin >> age;
    
    // TODO: اكتب الكود الخاص بك هنا
    // أنشئ الدالة validateUser ونفّذ منطق التحقق
    // استخدم كتل try-catch للتعامل مع الاستثناءات
    
    return 0;
}
quiz iconاختبر نفسك

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

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

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