تزودنا لغة C++ بفئة معالجة الاستثناءات القياسية ، والتي تُستخدم لطرح الاستثناءات عند تنفيذ الوظائف في مكتبة C++ القياسية. الهيكل الهرمي لفئات الاستثناء القياسية التي توفرها C++ هو كما يلي:
يمكن ملاحظة أن جميع فئات الاستثناء ترث من فئة الاستثناء الأساسية Logic_error وruntime_error ضمن فئة الاستثناء، وهما فئتان كبيرتان نسبيًا، بما في ذلك فئات ذاتية متعددة، وهي مقسمة إلى جداول لتمثيل الأخطاء المنطقية وأخطاء وقت التشغيل .
أعط أمثلة مثل:
1. عندما نستخدم الجديد لفتح الذاكرة، إذا لم تكن هناك مساحة كافية، فسيتم طرح استثناء bad_alloc .
2. عندما نستخدمdynamic_cast() لإجراء تحويل النوع الديناميكي والفشل، سيتم طرح استثناء bad_typeid .
3. عندما تتجاوز القيمة المحسوبة الحد الأقصى للنطاق الذي يمثله النوع، يتم طرح استثناء overflow_error ، مما يشير إلى تجاوز سعة العملية. وبالمثل، يشير underflow_error إلى تجاوز سعة العملية.
4. عندما نستخدم فئة السلسلة المنخفضة ولكنها تخرج عن الحدود، يتم طرح استثناء out_of_range .
انتظر...انتظر...يرجى معرفة المزيد بنفسك.
تجدر الإشارة إلى أنه عند استخدام فئة الاستثناء القياسية التي تأتي مع C++، تحتاج إلى تضمين ملف الرأس المقابل، لأنه يتم تعريف فئتي الاستثناء وbad_exception في استثناء ملف الرأس، ويتم تعريف فئة bad_alloc في ملف الرأس الجديد، ويتم تعريف فئة bad_typeid في ملف الرأس typeinfo، ويتم تعريف فئة ios_base::failure في ملف الرأس ios، ويتم تعريف فئات الاستثناءات الأخرى في stdexcept.
سأوضح لك أدناه كيفية استخدام فئة الاستثناء القياسية لـ C++ :
#include<iostream>#include<new>#include<stdexcept>usingnamespacestd;// معالجة الاستثناء intmain(){string*s;try{s=newstring(www.dotcpp.com);cout<<s->substr( 15,5);}catch(bad_alloc&t){cout<<Exceptionoccurred:<<t.what()<<endl;}catch(out_of_range&t){cout<<Exceptionoccurred:<<t.what()<<endl;} العودة0؛}
نتائج التشغيل هي كما يلي:
يرجى تجربتها بنفسك وتعلم كيفية استخدامها!