如果我调用通过 GetLastError 报告错误的 Win32 函数,例如RegisterClassEx,我如何为该错误抛出 std::system_error ?
问问题
7619 次
2 回答
9
请注意,比较 astd::error_code
类别中的astd::system_category()
通常不适用于std::errc
枚举常量,具体取决于您的供应商。例如
std::error_code(ERROR_FILE_NOT_FOUND, std::system_category()) != std::errc::no_such_file_or_directory)
某些供应商需要使用std::generic_category()
它才能工作。
在 MinGWstd::error_code(ERROR_FILE_NOT_FOUND, std::system_category()).message()
中不会给你正确的信息。
对于一个真正可移植且健壮的解决方案,我建议您自己继承std::system_error
和std::system_category
实现正确的功能windows_error
。windows_category
据报道,YMMV、VS2017 可以正常工作。
于 2013-09-06T21:28:15.247 回答