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

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

في المثال التالي قمنا بتعريف دالة إسمها checkWord() عند استدعاءها نمرر لها نص لتتحقق منه و التأكد ما إن كان يحتوي على كلمة واحدة أم لا.
الدالة سترمي إستثناء قيمته العدد 0 في حال تم تمرير نص فارغ لها, و سترمي إستثناء قيمته الكلمة 'Space' في حال تم تمرير أكثر من كلمة لها.

مثال

main.cpp
#include <iostream>

using namespace std;

// عند استدعاءها نمرر لها نص checkWord() هنا قمنا بتعريف دالة إسمها
checkWord(string s)
{
    // في حال كان النص الذي تم تمريره لا يحتوي على أي حرف سيتم رمي إستثناء عبارة عن عدد قيمته 0
    if (s.empty())
        throw 0;

    // "Space" في حال كان النص الذي تم تمريره يحتوي على مسافة فارغة سيتم رمي إستثناء عبارة عن نص قيمته
    if (s.find(" ") != string::npos)
        throw "Space";
}

// main() هنا قمنا بتعريف الدالة
int main()
{
    // هنا قمنا بتعريف النص الذي سنقوم بالتشييك على قيمته
    string s = "Hello Word!";

    // s للتشييك على قيمة المتغير checkWord() هنا قمنا باستدعاء الدالة
    try
    {
        checkWord(s);
    }
    // في حال تم رمي إستثناء قيمته العدد 0, سيتم معالجته هنا
    catch(int e)
    {
        cout << "Error: string length is empty! \n";
    }
    // سيتم معالجته هنا ,Space في حال تم رمي إستثناء قيمته الكلمة
    catch(char const* e)
    {
        cout << "Error: string contain a whitespace! \n";
    }
    // في حال تم رمي إستثناء من أي نوع آخر, سيتم معالجته هنا
    catch(...)
    {
        cout << "Error: something is not right! \n";
    }

    cout << "The program is still working properly :)";

    return 0;
}

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

Error: string contain a whitespace!
The program is still working properly :)