9

私はcplusplus.comから取得した次のコードを持っています:

// set_terminate example
#include <iostream>
#include <exception>
#include <cstdlib>
using namespace std;

void myterminate () {
  cout << "terminate handler called\n";
  abort();  // forces abnormal termination
}

int main (void) {
  set_terminate (myterminate);
  throw 0;  // unhandled exception: calls terminate handler
  return 0;
}

コードには未処理の例外があるため、終了ハンドラーとして設定され、デフォルトの終了ハンドラーをオーバーライドすることになっているmyterminate()関数を呼び出す必要があります。

プログラムはクラッシュしていますが、myterminate()を呼び出していません。Visual C ++ 2008ExpressEditionを使用しています。

コードの問題は何ですか?

4

1 に答える 1

10

1つの可能性-VC++デバッガー内でプログラムを実行している場合、デバッガーは未処理の例外をキャッチし、myterminateを実行するために実行中のプログラムに制御を戻さない可能性があります。VisualC++の外部でプログラムを実行してみてください。

于 2010-11-07T18:01:28.543 に答える