当您从c ++调用LUA函数并且存在运行时错误时,LuaBind会抛出一个luabind :: error异常,您可以捕获该异常,然后读取堆栈以查看错误是什么。我的调试器确实捕获了这个异常但是当我让调试器继续运行时,程序会立即终止,而不是在我的代码中捕获异常。
" call_member.hpp"抛出异常。在LuaBind中包含析构函数~sexy_member_void_caller()中的文件。
简单的测试代码会出现问题。我正在使用Xcode 5和LuaBind 0.9.1。
答案 0 :(得分:8)
事实证明它是bad practice to throw exceptions in destructors。使用C ++ 11析构函数是隐式noexcept(true)
,因此如果发生异常,程序将终止。 LuaBind在析构函数中使用异常,因此在我的现代编译器中程序终止。将方法签名编辑为:
~proxy_member_void_caller() noexcept(false) {}
允许您在c ++ 11中捕获LuaBind中的异常。