[解決済み] C++でエラーメッセージを入れるには、どのような方法が望ましいですか?
2022-03-06 03:13:26
質問
以下の選択肢のうち、どれが好ましいでしょうか?
-
必要な場合は、コード内にエラーメッセージを含めます。
cout << "I am an error message!" <<endl; exit(-1);
-
エラーメッセージを別のヘッダーファイルで定義する。
#include "ErrorMessages.h" cout << ERRORMESSAGE_1 <<endl; exit(-1);
-
エラーメッセージを含む関数を作成します。
また、これらのメッセージの一部としてユニークなエラーIDを含めることは一般的でしょうか?
解決方法は?
メリットとデメリットの両方があり、全ては好みの問題です。
エラー現場で文字列リテラルをハードコーディングするのは、メンテナンスが大変かもしれませんが、読みやすいというのが私の率直な感想です。
例えば
cout << "You were unable to login. "
<< "Please check you're user name and password and try again"
<< endl;
よりもはるかに良い意図を表しています。
cout << LOGIN_CREDENTIALS_ERROR << endl;
しかし、メッセージをハードコーディングしないことによるプラス面(いずれも
2
と
3
):
//Foo.cpp:
cout << DIVIDE_BY_ZERO_ERROR << endl;
//Bar.cpp
cout << DIVIDE_BY_ZERO_ERROR << endl;
// If you want to change DIVIDE_BY_ZERO_ERROR text you only have to do it once
//ErrorMessages.h (Ops grammar needs correcting)
const std:string DIVIDE_BY_ZERO_ERROR = "Dont not divide by zero";
また、エラーメッセージが変更される可能性がある場合。
// ErrorMessages.h
#ifdef LOCALIZATION_EN
const std:string FRIENDLY_ERROR = "Hello, you are doing something wrong";
#elseif LOCALIZATION_FR
const std:string FRIENDLY_ERROR = "Bonjour, ...";
...
または
// ErrorMessages.h
#ifdef DEBUG
const std:string SOME_ERROR = "More detailed error information for developers"
#else
const std:string SOME_ERROR = "Human friendly error message"
#endif
関連
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++
-
[解決済み】'std::cout'への未定義の参照