gpt4 book ai didi

c++ - 当我的 lua 代码抛出错误时,为什么我无法捕获 luabind::error 异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:04 26 4
gpt4 key购买 nike

当您从 C++ 调用 LUA 函数并且出现运行时错误时,LuaBind 会抛出一个 luabind::error 异常,您可以捕获该异常,然后读取堆栈以查看错误是什么。我的调试器确实捕获了这个异常,但是当我让调试器继续运行时,程序没有在我的代码中捕获到异常,而是立即终止。

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

简单的测试代码就会出现问题。我正在使用带有 LuaBind 0.9.1 的 Xcode 5。

最佳答案

原来是bad practice to throw exceptions in destructors .在 C++11 中,析构函数是隐式的 noexcept(true),因此如果发生异常,程序将终止。 LuaBind 在析构函数中使用异常,因此在我的现代编译器上程序终止。将方法签名编辑为:

~proxy_member_void_caller() noexcept(false) {}

允许您在 c++11 中捕获来自 LuaBind 的异常。

关于c++ - 当我的 lua 代码抛出错误时,为什么我无法捕获 luabind::error 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com