#include "iostream"
#include "conio.h"
#include "exception"
#include "cstdlib"
using namespace std;
void myunexpected ()
{
cerr << "unexpected called\n";
throw 0; // throws int (in exception-specification)
}
void myfunction () throw (int)
{
throw 'x'; // throws char (not in exception-specification)
}
int main (void)
{
set_unexpected (myunexpected);
try
{
myfunction();
}
catch (int) { cerr << "caught int\n"; }
catch (...) { cerr << "caught other exception (non-compliant compiler?)\n"; }
getch();
return 0;
}
出力(Visual Studio 2008で実行した場合):他の例外をキャッチしました(非準拠のコンパイラ?)
しかし、私は出力が次のようになることを期待していました。
予期せぬ呼ばれる
キャッチされたint
注:このプログラムはVisualStudio2008で実行しました。