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 :)
		

الدورات

أدوات مساعدة

أقسام الموقع

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