我有一些奇怪的代码需要在asm
块中调用throw函数,并且能够捕获抛出的异常。我的代码看起来像这样:
// Throwing Function
void throwing() __asm__("throwing");
void throwing() {
throw "abc";
}
// Assembly function which calls throwing()
void asm_call() {
__asm__ __volatile__ (
"call throwing\n"
);
}
// Main calls the assembly function in a try block
int main() {
try {
asm_call();
} catch (...) {
std::cout << "caught..." << std::endl;
}
return 0;
}
我无法得到被主要捕获的异常;它总是在到达throw "abc";
行时终止。我看到了一个类似的问题here,我尝试了最佳答案,但它对我不起作用。是否可以捕获asm_call
中抛出的异常?
我正在使用x64 Linux和g ++ 6.3.0。