إعلان
تعلم الآن

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 :)
		
إعلان
دورة أساسيات و إدارة أنظمة لينكس في هذه الدورة ستتعلم أساسيات نظام لينكس، أوامره و إدارته بالتطبيق العملي، كما ستتعلم كيفية إستضافة مواقع ووردبريس عليه. سعر الدورة الآن هو 30 ريال سعودي.
سعر الدورة الآن هو 30 ريال سعودي فقط.
تعلم الآن

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة