私の主な機能では、私はコーディングしました:
try {
empty.addItem( );
throw 50;
} catch(int x ) {
cout<<"fail "<<x;
}
しかし、プログラムを実行すると、fail 50 は出力されません。私のエラーは何ですか?また、例外を適切に使用するにはどうすればよいですか?
以下のLinuxのテストプログラムで動作します。
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
try {
throw 50;
} catch(int x ) {
cout << "fail " << x << endl;
}
return 0;
}
$ g++ throw.cpp
$ ./a.out
fail 50
このコードのチャンクがプログラムで実行されていると確信していますか?
コードに明らかに問題はありません。「fail 50」が表示されない理由として、次の 2 つが考えられます。
プログラム制御が実際にtry
ブロックに到達することはありませんthrow
。
empty.addItem()
ではない例外をスローしていますint
。代わりに、キャッチされない例外でプログラムが不思議なことに失敗することに気付くでしょう。