2

私のプログラムは正常にコンパイルされますが、throw(try ... catchブロック内ではない)が呼び出されるたびにクラッシュします。

プロジェクト内のすべてのファイルに使用される引数のようなコマンドは次のとおりです。

mingw32-g++.exe -fexceptions -DWIN32 -D_WINDOWS -D_MBCS -DNO_SOCKLEN_T -DDONTUSEMEMMANAGER -Wall -g -W -fexceptions -DDEBUG

(WallによってWが不要になり、そこに-fexceptionsが2回あることを知っています。)

編集:私はその振る舞いに実際には何も悪いことはないことを知っています。問題は、プログラムがクラッシュしないことを意味するために使用されていたということです。しかし、数日前にいくつかのファイルに変更を加え、再度コンパイルすると、突然クラッシュしました

4

2 に答える 2

6

まあ、これは予想される動作です。標準には[except.handle]と書かれています:

一致するハンドラーが見つからない場合は、関数std :: terminate()が呼び出されます。[...]

于 2012-06-16T13:41:46.207 に答える
4

これは、未処理の例外と呼ばれます。予想される動作は、プログラムが終了することです。

于 2012-06-16T13:40:08.563 に答える