C++ 为什么异步库(如Asio和Beast)中不使用noexcept

C++ 为什么异步库(如Asio和Beast)中不使用noexcept,c++,boost,boost-asio,asio,boost-beast,C++,Boost,Boost Asio,Asio,Boost Beast,异步函数通常不使用异常 即使在同步调用中,Asio和Boost Beast也有重载,这些重载采用类型为system\u error&的输出参数,而不是抛出 异步操作无法引发异常,因为该操作未在调用代码的堆栈帧中完成 是否有一个技术原因导致这些未声明为noexcept 除了可能的性能优势外,我还认为这对用户来说是一个有用的提示,因为用户知道他们不需要异常处理 从技术上讲,他们可能会抛出异常,比如先决条件检查或无效参数我认为他们出现的时间比noexcept的时间要长。@DanielA.White嗯,

异步函数通常不使用异常

即使在同步调用中,Asio和Boost Beast也有重载,这些重载采用类型为
system\u error&
的输出参数,而不是抛出

异步操作无法引发异常,因为该操作未在调用代码的堆栈帧中完成

是否有一个技术原因导致这些未声明为noexcept

除了可能的性能优势外,我还认为这对用户来说是一个有用的提示,因为用户知道他们不需要异常处理


从技术上讲,他们可能会抛出异常,比如先决条件检查或无效参数

我认为他们出现的时间比
noexcept
的时间要长。@DanielA.White嗯,我很确定
throw()
noexcept
的哥哥
std::thread
之前就在那里。我猜这只是图书馆的疏忽。如前所述,他们不会扔任何东西。@bartop
throw()
充满了问题,缺乏采纳,以至于没有人使用它,指南积极警告不要使用它。