Jon*_*rdy 5 c++ exception coroutine
我的印象是,在 C++ 中使用setjmp()andlongjmp()几乎肯定会弄乱堆栈,因为这些函数不会像异常那样执行展开。然而,此 MSDN 页面表明可以告诉 Microsoft 实现调用本地对象的析构函数,这意味着谨慎使用这些函数可能是安全的。
setjmp()在使用C++时是否有一种可移植的方法来确保程序的正确性longjmp()?C++ 中的最佳实践表明,异常最好不要用于流程控制,但在需要高度不寻常的流程(例如协程和闭包)的情况下,是否总是最好使用异常来代替这些函数?
如果您有一些非常奇怪的要求,不允许您使用条件/循环/中断正常控制程序流程,我更愿意使用异常而不是 jmp。
在某些情况下,使用异常来控制流程是可以接受的。我认为 Boost.Graph 的搜索函数之一会抛出异常,以便从深度递归快速返回调用者。