Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

C++تعريف دالة ترمي إستثناءات عبارة عن أرقام

في المثال التالي قمنا بتعريف دالة إسمها compareAges() عند استدعاءها نمرر لها عددين, العدد الأول عبارة عن عمر الإبن و الثاني عبارة عن عمر والدته.
الدالة ستقوم بمقارنة عمر الإبن مع عمر والدته و ترجع الفارق بينهما بشرط أن تكون الأعداد التي نمررها لها تعتبر أعداد مقبولة منطقياً, غير ذلك سترمي إستثناء.

مثال

main.cpp
#include <iostream>

using namespace std;

// عند استدعاءها نمرر لها عددين فتقوم بإرجاع عدد يمثل الفارق بينهما compareAges() هنا قمنا بتعريف دالة إسمها
int compareAges(int sonAge, int momAge)
{
    // في حال كان عمر الإبن أكبر أو يساوي عمر الأم سيتم رمي إستثناء رقمه 1
    if (sonAge >= momAge)
        throw 1;

    // في حال كان عمر الإبن أصغر أو يساوي صفر سيتم رمي إستثناء رقمه 2
    else if (sonAge <= 0)
        throw 2;

    // في حال كان عمر الأم أصغر أو يساوي صفر سيتم رمي إستثناء رقمه 3
    else if (momAge <= 0)
        throw 3;

    // في حال لم يكن الفرق بين عمر الأم و الإبن 12 سنة على الأقل سيتم رمي إستثناء رقمه 4
    else if (momAge - sonAge < 12)
        throw 4;

    // إذا لم يتم رمي إستثناء سيتم إرجاع فرق العمر
    return momAge - sonAge;
}

// main() هنا قمنا بتعريف الدالة
int main()
{
    // و تمرير عددين لها يمثلان عمر الأم و عمر إبنها لمعرفة ما إن كانت الأعمار المدخلة تعتبر مقبولة أم لا compareAges() هنا قمنا باستدعاء الدالة
    try
    {
        compareAges(26, 24);
    }
    // e الإستثناء الذي سيتم رميه سيكون عبارة عن نص (سلسلة من الأحرف) و هذه الأحرف سيتم تمريرها كقيمة للمتغير
    catch (int e)
    {
        switch(e)
        {
            case 1:
                cout << "Error: Son's age can't be less than his mom! \n";
                break;
            case 2:
                cout << "Error: Son's age can't be less than or equal zero \n";
                break;
            case 3:
                cout << "Error: Mom's age can't be less than or equal zero \n";
                break;
            case 4:
                cout << "Error: Mom's age should be 12 years bigger than son age \n";
                break;
        }
    }
    
    // هنا سيتم تنفيذ الأمر التالي بشكل عادي جداً لأن الإستثناء الذي حدث في السابق تم معالجته
    cout << "The program is still working properly :)";
    
    return 0;
}

سنحصل على النتيجة التالية عند التشغيل.

Error: Son's age can't be less than his mom!
The program is still working properly :)