تجول C ++

C ++ الصفحة الرئيسية C ++ مقدمة C ++ ابدأ بناء جملة C ++ إخراج C ++ تعليقات C ++ متغيرات C ++ مدخلات مستخدم C ++ أنواع بيانات C ++ عوامل C ++ سلاسل C ++ C ++ الرياضيات C ++ منطقية شروط C ++ مفتاح C ++ C ++ أثناء التكرار C ++ للحلقة C ++ استراحة / متابعة صفائف C ++ مراجع C ++ مؤشرات C ++

وظائف C ++

وظائف C ++ معلمات وظيفة C ++ وظيفة C ++ الزائد

فئات C ++

C ++ OOP فئات / كائنات C ++ طرق فئة C ++ C ++ البناة محددات الوصول C ++ تغليف C ++ الوراثة C ++ تعدد الأشكال C ++ ملفات C ++ استثناءات C ++

C ++ كيف

أضف عددين

أمثلة C ++

أمثلة C ++ مترجم C ++ تمارين C ++ اختبار C ++


استثناءات C ++


استثناءات C ++

عند تنفيذ كود C ++ ، يمكن أن تحدث أخطاء مختلفة: أخطاء في الترميز قام بها المبرمج ، أو أخطاء ناتجة عن إدخال خاطئ ، أو أشياء أخرى غير متوقعة.

عند حدوث خطأ ، ستتوقف C ++ بشكل طبيعي وتنشئ رسالة خطأ. المصطلح التقني لهذا هو: C ++ ستطرح استثناء (بطرح خطأ).


C ++ جرب وامسك

تتكون معالجة الاستثناءات في C ++ من ثلاث كلمات رئيسية: try، throwو catch:

تسمح tryلك العبارة بتحديد كتلة من التعليمات البرمجية ليتم اختبارها بحثًا عن الأخطاء أثناء تنفيذها.

تطرح throwالكلمة الأساسية استثناءً عند اكتشاف مشكلة ، مما يتيح لنا إنشاء خطأ مخصص.

تسمح catchلك العبارة بتحديد كتلة من التعليمات البرمجية ليتم تنفيذها ، في حالة حدوث خطأ في كتلة try.

تأتي الكلمات الرئيسية tryوالكلمات catchالرئيسية في أزواج:

مثال

try {
  // Block of code to try
  throw exception; // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

خذ بعين الاعتبار المثال التالي:

مثال

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Age is: " << myNum;
}

شرح المثال

نستخدم tryالكتلة لاختبار بعض الكود: إذا كان ageالمتغير أقل من 18، فسنقوم throwباستثناء ، ونتعامل معه في catchالكتلة الخاصة بنا.

في catchالكتلة ، نكتشف الخطأ ونفعل شيئًا حيال ذلك. catch تأخذ العبارة معلمة : في مثالنا نستخدم intمتغيرًا ( myNum) (لأننا نطرح استثناءً من intالنوع في tryblock ( age)) ، لإخراج قيمة age.

في حالة عدم حدوث خطأ (على سبيل المثال ، إذا كان بدلاً من age، مما يعني أنه سيكون أكبر من 18) ، يتم تخطي الكتلة:2015catch

مثال

int age = 20;

يمكنك أيضًا استخدام throwالكلمة الأساسية لإخراج رقم مرجعي ، مثل رقم / رمز خطأ مخصص لأغراض التنظيم:

مثال

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Error number: " << myNum;
}

التعامل مع أي نوع من الاستثناءات (...)

إذا كنت لا تعرف throw النوع المستخدم في tryالكتلة ، فيمكنك استخدام صيغة "النقاط الثلاث" ( ...) داخل catchالكتلة ، والتي ستتعامل مع أي نوع من الاستثناءات:

مثال

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "Access denied - You must be at least 18 years old.\n";
}