私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の値に対応する必要があり、などの値に対応する必要があります。したがって、ここに私の質問があります。errnoGetLastErrorstd::error_conditionsLibraryFailedToLoadSymbolNotFound
- 私の理解は
std::error_code正しいstd::error_conditionですか? - 列挙型の下でそれらを定義するために、可能なすべての値
errnoを知るにはどうすればよいですか? 将来、Microsoft が API に追加のエラー値を追加した場合はどうなりますか? ソースコードに戻って、私が持っている列挙型の下でそれらを定義する必要がありますか?GetLastError()std::error_codesstd::error_codes - 別のプラットフォームを使用していて、エラーが発生したときに正確なシステム エラー コードを把握する方法がない場合はどうすればよいでしょうか?
std::error_codescommons 名前空間全体で同じものを使用し、 のstd::error_conditionようにサブ名前空間ごとに異なるものだけを定義したい場合はどうすればよいでしょうかdynlib。これは良い習慣ですか?これにより、コードの重複が回避されるため、はいと言います。しかし、これには裏があるのでしょうか。- 現時点では
std::error_category、コモンズのサブ名前空間ごとに単一のものを使用しています。これは良い習慣ですか?を別の方法で使用する必要があると思いますstd::error_categoryか?