我对C++异常处理机制的工作方式很感兴趣.具体来说,存储异常对象的位置以及它如何通过多个范围传播直到被捕获?它存储在一些全球范围内吗?
由于这可能是编译器特定的,有人可以在g ++编译器套件的上下文中解释这一点吗?
我有C++函数我想要声明使用,extern "C"即使它们只在C++代码中调用.是的,我知道这很奇怪但是我想要保持一致性,因为我们混合了C和C++声明.我只是想确保声明一个C++函数extern "C"不会影响抛出的行为.
它看起来像这样:
extern "C" void foo() {throw exception;}
int bar()
{
try
{
foo();
} catch (exception e) { return 1; }
}
Run Code Online (Sandbox Code Playgroud)