ゼロによる整数除算が発生したときに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 ::例外をスローされていません。それは他に何を投げるかもしれない?
解決
これは、C ++とは何の関係もありませんWindowsの構造化例外、だ - 。それはCプログラムであれば、あなたが同じ例外になるだろう。
他のヒント
この記事では、<のhref = "http://msdn.microsoft.com/en-us/library/aa298592(VS.60).aspxを使用してC ++例外に構造化例外を変換する方法を持っていると主張します"REL =" nofollowをnoreferrer "> _ set_se_translator の機能
結果は未定義である、あなたが使用することができます __try /エラー(構造化例外処理)をキャッチする__except をブロック。しかし、なぜ単にあなたの分割前のエラーをチェックしませんか?
MSVC6では、キャッチ(...)でそれをキャッチすることができますし、スローでそれを再スロー。あなたは例外を検出することはできませんので、しかし、あなたが何かをやって方がいいでしょうそのように入力します。
所属していません StackOverflow