Visual Studio 2013 でハードウェアとソフトウェアの例外を調べています。「C++ 例外を有効にする」オプションを /EHa (SEH 例外ではい) に設定することで、ハードウェア例外をキャッチできることがわかっています。次の例外をキャッチしようとしています。
EXCEPTION_ARRAY_BOUNDS_EXCEEDED - キャッチできませんでした
EXCEPTION_ACCESS_VIOLATION - キャッチ
EXCEPTION_INT_OVERFLOW - キャッチしませんでした
EXCEPTION_INT_DIVIDE_BY_ZERO - キャッチ
これはコードの例です。
try {
a = std::numeric_limits<int>::max();
a += 5;
}
catch (...){
std::cout << "EXCEPTION_INT_OVERFLOW Exception Caught" << std::endl;
exit(1);
}
try {
int h = 0;
b = b / h;
}
catch (...){
std::cout << "EXCEPTION_INT_DIVIDE_BY_ZERO Exception Caught" << std::endl;
exit(1);
}
ゼロ除算の例外のみをキャッチします。これはプロセッサに依存していますか、それとも他に何かありますか? もう 1 つ質問があります。デバッグ ビルドとリリース ビルドに違いはありますか?