C++ 在BOOST中禁用异常?

C++ 在BOOST中禁用异常?,c++,exception,boost,C++,Exception,Boost,我想使用boost::asio,但我不希望boost抛出异常,因为在我的环境中,不能引发异常 我遇到了BOOST\u NO\u异常,但是throw\u异常的调用方可以假设这个函数永远不会返回。 但是用户提供的函数怎么可能不返回呢?我需要在此处插入什么替换函数?如果boost代码想要抛出异常,我是否必须终止进程?要么终止进程,要么使用之前用setjmp定义的longjmp进入类似全局错误处理程序的程序。您似乎误解了boost无异常的含义,它只会给你一个机会,以你所希望的方式以一致的方式进行救助 执

我想使用boost::asio,但我不希望boost抛出异常,因为在我的环境中,不能引发异常

我遇到了
BOOST\u NO\u异常
,但是throw\u异常的调用方可以假设这个函数永远不会返回。
但是用户提供的函数怎么可能不返回呢?我需要在此处插入什么替换函数?如果boost代码想要抛出异常,我是否必须终止进程?

要么终止进程,要么使用之前用setjmp定义的longjmp进入类似全局错误处理程序的程序。

您似乎误解了boost无异常的含义,它只会给你一个机会,以你所希望的方式以一致的方式进行救助


执行已进入无法继续的状态,即抛出异常时,因此,如果用户定义的抛出异常返回,则认为行为未定义是合乎逻辑的。

那么,在出现错误的情况下,您希望做什么?BOOST_NO_异常不会神奇地使BOOST源代码使用将错误传播回调用方的替代机制。因此,要么将错误打印到stderr和die,要么将jmp一直拖到顶部——泄漏当前调用堆栈上的函数可能分配的任何资源。

我认为所有可能抛出的boost ASIO函数都提供了一个显式不抛出的重载(ASIO错误)。这些重载要求您传入boost::system::error\u code对象将在函数有机会返回之前退出程序。