C++تعريف دالة ترمي إستثناءات عبارة عن أرقام
في المثال التالي قمنا بتعريف دالة إسمها compareAges()
عند استدعاءها نمرر لها عددين, العدد الأول عبارة عن عمر الإبن و الثاني عبارة عن عمر والدته.
الدالة ستقوم بمقارنة عمر الإبن مع عمر والدته و ترجع الفارق بينهما بشرط أن تكون الأعداد التي نمررها لها تعتبر أعداد مقبولة منطقياً, غير ذلك سترمي إستثناء.
مثال
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 :)