C++تعريف دالة ترمي إستثناءات من أكثر من نوع
في المثال التالي قمنا بتعريف دالة إسمها checkWord()
عند استدعاءها نمرر لها نص لتتحقق منه و التأكد ما إن كان يحتوي على كلمة واحدة أم لا.
الدالة سترمي إستثناء قيمته العدد 0
في حال تم تمرير نص فارغ لها, و سترمي إستثناء قيمته الكلمة 'Space'
في حال تم تمرير أكثر من كلمة لها.
مثال
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 :)