c++ 哪些异常会引发::process::child抛出?

h4cxqtbf  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(131)

在过程教程中,它指出
所有函数的默认行为都是在失败时抛出std::system_error
但是,给出的示例使用的是boost::process::systemboost::process::child函数是否会像boost::system函数那样抛出std::system_error?将来在哪里可以找到其他类的此信息?它不是class documentation的一部分

nfs0ujit

nfs0ujit1#

教程确实指出std::system_error,而参考文档指出:

namespace boost {
  namespace process {
    struct process_error;
  }
}

代码检查是最终的答案(boost/process/exception.hpp):

namespace boost
{
namespace process
{
///The exception usually thrown by boost.process.
/** It merely inherits [std::system_error](http://en.cppreference.com/w/cpp/error/system_error)
 * but can then be distinguished in the catch-block from other system errors.
 *
 */
struct process_error : std::system_error
{
    using std::system_error::system_error;
};

}
}

如果标记为noexcept的函数抛出,则调用std::terminate;这有效地简化了关于它们的推理,因为它们通常是非抛出的。否则,即没有noexcept或有noexcept(false),函数可以抛出任何东西。最后,这取决于程序员是否相信规范。

相关问题