为什么可以';当我的lua代码抛出错误时,我是否捕捉到luabind::error异常? 当你从C++调用一个Lua函数并有一个运行时错误时,LuaBind抛出一个可以捕获的LuabnId::错误异常,然后读取堆栈来查看错误是什么。我的调试器肯定会捕获此异常,但当我让调试器继续时,程序会立即终止,而不是在代码中捕获异常

为什么可以';当我的lua代码抛出错误时,我是否捕捉到luabind::error异常? 当你从C++调用一个Lua函数并有一个运行时错误时,LuaBind抛出一个可以捕获的LuabnId::错误异常,然后读取堆栈来查看错误是什么。我的调试器肯定会捕获此异常,但当我让调试器继续时,程序会立即终止,而不是在代码中捕获异常,c++,c++11,exception-handling,lua,luabind,C++,C++11,Exception Handling,Lua,Luabind,LuaBind include文件中的“call_member.hpp”中抛出了来自析构函数~proxy_member_void_caller()的异常 这个问题发生在简单的测试代码中。我将Xcode 5与LuaBind 0.9.1一起使用。事实证明确实如此。对于C++11,析构函数隐式地noexcept(true),因此如果发生异常,程序将终止。LuaBind在析构函数中使用异常,因此在我的现代编译器中,程序终止。编辑方法签名以: ~proxy_member_void_caller() noe

LuaBind include文件中的“call_member.hpp”中抛出了来自析构函数~proxy_member_void_caller()的异常

这个问题发生在简单的测试代码中。我将Xcode 5与LuaBind 0.9.1一起使用。

事实证明确实如此。对于C++11,析构函数隐式地
noexcept(true)
,因此如果发生异常,程序将终止。LuaBind在析构函数中使用异常,因此在我的现代编译器中,程序终止。编辑方法签名以:

~proxy_member_void_caller() noexcept(false) {}

允许您捕获c++11中LuaBind的异常

这不仅仅是坏习惯!老实说,是谁扔了破坏者!除了~proxy\u member\u void\u caller()之外,您还需要在同一文件中修补~proxy\u member\u caller()。此外,您可能还希望在call_function.hpp中获得类似的函数