如何使用 `std::error_category` 和 system_error 标头中的其他内容?

Ral*_*zky 5 c++ error-handling c++11 system-error

C++ 中已经有足够多的错误处理策略。我们有异常处理、错误返回码和这些ERRNO乱七八糟的东西。什么样的角色在system_error这里头玩?我如何使用那里的功能?对我来说,它看起来只是随机组合在一起。我使用cppreference站点作为参考。

sas*_*hka 3

您可以throwcatch其视为正常异常。它只是层次结构的一部分std::exceptionstd::system_error延伸std::runtime_error延伸std::exception

什么时候应该使用它?通常,它用于将 C 风格的 ERRNO 错误转换为在对象内封装错误代码的 throw&catch 处理。标准库本身大量使用了这一点,尤其是在处理特定于操作系统的内容的新库中,例如在<thread>库中。