C++ でのエラー処理
この簡単なガイドでは、C++ でのエラーと例外の処理について説明します。
C++ でのエラー処理
C++ のプログラムには、複数の種類のエラーが存在する可能性があります。 一部のエラーでは、ユーザーへの通知が必要です。
ユーザーに適切なエラー メッセージを表示し、プログラムを終了する必要があります。
エラーの処理には、いくつかの異なる方法を採用できます。 これらのいくつかは次のとおりです。
- ハードコーディングされたエラー メッセージをユーザーに表示します。
- 予想されるエラー メッセージをいくつかの変数に保存し、それらの変数を表示します。
- 例外処理を行う。
ハードコーディングされたエラー メッセージを表示する最初の方法は、非常に簡単です。 コードにエラーが発生する可能性がある場合は、エラー メッセージを表示してコードを終了します。
たとえば、無効なログインまたはパスワード入力の場合、次のようなメッセージを表示できます。
cout << "You have entered an incorrect username or password" << endl;
cout << "Try again!" << endl;
2 番目の方法は、考えられるエラー メッセージの文字列をいくつか作成し、それらの変数を必要な場所に表示することです。
const string INVALID_LOGIN_ERROR_MESSAGE = "Invalid Username or Password";
// later in the code
cout << INVALID_LOGIN_ERROR_MESSAGE << endl;
このようなタイプの文字列は、ErrorMessages.h
のような別のヘッダー ファイルで宣言し、そのヘッダー ファイルをメイン ファイルに含めることができます。 このような文字列リテラルの利点は、コードの重複を防ぐことです。
エラーメッセージを変更したいときはいつでも、1つの場所 (つまり、宣言部分) を変更する必要があります。
C++ での例外処理
熟練したプログラミング スキルを持っていても、一部の実行時エラーは防止できません。 これらは例外であり、そのような種類のエラーに対して例外処理を行います。
たとえば、使用できないマシンから一部のメモリにアクセスしようとしたり、API ユーザーが関数に不正な引数を渡したりすることがあります。 このようなタイプのエラーは、例外処理を使用して処理されます。
プログラムで例外処理を使用するには、何らかのエラーが予想されるコード ブロックを try
ブロックで囲みます。 したがって、例外が発生するたびに、関連する catch
ブロックに制御が自動的に移され、プログラムを終了する前に意味のあるエラー メッセージが表示されます。
以下の例を考えてみましょう。
#include <iostream>
using namespace std;
int main() {
int n1 = 2, n2 = 0;
try {
if (n2 != 0)
cout << "Division: " << n1 / n2 << endl;
else
throw 0;
} catch (int e) {
cout << "Divide by zero exception " << endl;
}
return 0;
}
上記のコードの出力は次のようになります。