Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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;
}
#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 :)