1. ホーム
  2. c++

[解決済み] C++でエラーメッセージを入れるには、どのような方法が望ましいですか?

2022-03-06 03:13:26

質問

以下の選択肢のうち、どれが好ましいでしょうか?

  1. 必要な場合は、コード内にエラーメッセージを含めます。

    cout << "I am an error message!" <<endl;
    exit(-1);
    
    
  2. エラーメッセージを別のヘッダーファイルで定義する。

    #include "ErrorMessages.h"
    cout << ERRORMESSAGE_1 <<endl;
    exit(-1);
    
    
  3. エラーメッセージを含む関数を作成します。

また、これらのメッセージの一部としてユニークなエラーIDを含めることは一般的でしょうか?

解決方法は?

メリットとデメリットの両方があり、全ては好みの問題です。

エラー現場で文字列リテラルをハードコーディングするのは、メンテナンスが大変かもしれませんが、読みやすいというのが私の率直な感想です。

例えば

cout << "You were unable to login. "
     << "Please check you're user name and password and try again"
     << endl;

よりもはるかに良い意図を表しています。

cout << LOGIN_CREDENTIALS_ERROR << endl;

しかし、メッセージをハードコーディングしないことによるプラス面(いずれも 23 ):

//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