ماذا يلقي MSVC 6 عند حدوث تقسيم عدد صحيح بواسطة صفر؟
سؤال
كنت أفعل القليل من التجربة، واكتشفت أن يتم إلقاء استثناء، عندما يحدث انقسام عدد صحيح عن طريق الصفر.
#include <iostream>
#include <stdexcept>
using namespace std;
int main
(
void
)
{
try
{
int x = 3;
int y = 0;
int z = x / y;
cout << "Didn't throw or signal" << endl;
}
catch (std::exception &e)
{
cout << "Caught exception " << e.what() << endl;
}
return 0;
}
من الواضح أنه لا يرمي استثناء STD :: ماذا قد يكون رمي؟
المحلول
إنه استثناء منظم Windows، والذي لا علاقة له ب C ++ - ستحصل على نفس الاستثناء إذا كان برنامج C.
نصائح أخرى
تدعي هذه المقالة أن يكون لها طريقة لتحويل استثناء منتظم لاستثناء C ++ باستخدام _set_se_translator. وظيفة.
والنتيجة غير محددة، يمكنك استخدامها __try / __except. كتلة للقبض على الخطأ (معالجة الاستثناء المنظم). ومع ذلك، لماذا لا تبحث ببساطة عن الخطأ قبل الانقسام الخاص بك؟
في MSVC6 يمكنك التقاطه مع الصيد (...) و Rethrow ذلك برمي؛ ولكن نظرا لأنك لا تستطيع اكتشاف نوع الاستثناء بهذه الطريقة أفضل حالتك في القيام بشيء آخر.
لا تنتمي إلى StackOverflow