ماذا يلقي MSVC 6 عند حدوث تقسيم عدد صحيح بواسطة صفر؟

StackOverflow https://stackoverflow.com/questions/1909967

  •  19-09-2019
  •  | 
  •  

سؤال

كنت أفعل القليل من التجربة، واكتشفت أن يتم إلقاء استثناء، عندما يحدث انقسام عدد صحيح عن طريق الصفر.

#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. وظيفة.

http://www.codeproject.com/kb/cpp/seException.aspx.

والنتيجة غير محددة، يمكنك استخدامها __try / __except. كتلة للقبض على الخطأ (معالجة الاستثناء المنظم). ومع ذلك، لماذا لا تبحث ببساطة عن الخطأ قبل الانقسام الخاص بك؟

في MSVC6 يمكنك التقاطه مع الصيد (...) و Rethrow ذلك برمي؛ ولكن نظرا لأنك لا تستطيع اكتشاف نوع الاستثناء بهذه الطريقة أفضل حالتك في القيام بشيء آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top