私system_error
のライブラリでエラーを処理するために機能を使用しようとしています。役に立つと思われる場合に備えて、ライブラリの構造について簡単に説明します。ライブラリの名前空間 が呼び出されcommons
、この下に という名前の別の名前空間がありますdynlib
。dynlib
.so/.dll ファイルのロードを担当するクラスが含まれています。
namespace commons {
namespace dynlib {
class DynLibLoader {
};
}
}
DynLibLoader で発生する可能性があるエラーはLibraryFailedToLoad
、LibraryFailedToUnload
およびSymbolNotFound
です。したがって、エラーを処理するための私の考えは次のとおりです。名前空間error
の下に名前空間を追加しますdynlib
。次に、その名前空間の下で、 1 つの列挙型std::error_codes
と 1つの列挙型を定義しますstd::error_conditions
。私の理解では、 (Linux) または(Win32)std::error_codes
の値に対応する必要があり、などの値に対応する必要があります。したがって、ここに私の質問があります。errno
GetLastError
std::error_conditions
LibraryFailedToLoad
SymbolNotFound
- 私の理解は
std::error_code
正しいstd::error_condition
ですか? - 列挙型の下でそれらを定義するために、可能なすべての値
errno
を知るにはどうすればよいですか? 将来、Microsoft が API に追加のエラー値を追加した場合はどうなりますか? ソースコードに戻って、私が持っている列挙型の下でそれらを定義する必要がありますか?GetLastError()
std::error_codes
std::error_codes
- 別のプラットフォームを使用していて、エラーが発生したときに正確なシステム エラー コードを把握する方法がない場合はどうすればよいでしょうか?
std::error_codes
commons 名前空間全体で同じものを使用し、 のstd::error_condition
ようにサブ名前空間ごとに異なるものだけを定義したい場合はどうすればよいでしょうかdynlib
。これは良い習慣ですか?これにより、コードの重複が回避されるため、はいと言います。しかし、これには裏があるのでしょうか。- 現時点では
std::error_category
、コモンズのサブ名前空間ごとに単一のものを使用しています。これは良い習慣ですか?を別の方法で使用する必要があると思いますstd::error_category
か?