研究プロジェクトのために C++ の基礎を学ぶ必要があり、エラー/例外処理を試しています。発生する可能性のあるイベント (ゼロ除算など) を予測するためにコマンドを正常に使用しthrow
ましたが、予期しない例外をキャッチする方法がわかりません。このコード例を見てください:
#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;
void arrayOutOfBound()
{
int a[3] = {1, 2, 3};
try
{
cout << "This should not display: " << a[5] << endl;
}
catch(runtime_error &e)
/* catch(exception &e) // also does not work */
{
cout << "Error: " << e.what() << endl;
}
}
int main()
{
arrayOutOfBound();
}
どこかでステートメントを使用する必要があると思いますが、それが機能throw
しないことを本当に知らなかったとa[5]
します (または、ユーザーがこのインデックスを入力し、配列のサイズを確認しませんでした)、どうすればプログラムがクラッシュするのを防ぐことができますか? (これは Visual C++ Express 2010 デバッガーで発生するため)
注:try { int result = a[5]; }
ブロックの外側で最初に実行cout << result
し、最後に使用しようとすると、プログラムはコンパイルされません。コンパイラは私を助けようとしていますが、例外処理を試すことができません。