gpt4 book ai didi

c - 使用 longjmp 在 Lua 中处理错误

转载 作者:太空狗 更新时间:2023-10-29 16:00:00 24 4
gpt4 key购买 nike

我正在我当前的项目中嵌入一个 Lua 解释器(用 C 编写),我正在寻找一个如何处理错误的示例。这是我目前所拥有的...

if(0 != setjmp(jmpbuffer)) /* Where does this buffer come from ? */
{
printf("Aargh an error!\n");
return;
}
lua_getfield(L, LUA_GLOBALSINDEX, "myfunction");
lua_call(L, 0, 0);
printf("Lua code ran OK.\n");

手册只是说使用 longjmp 函数会抛出错误,但 longjmp 需要一个缓冲区。我必须提供它还是 Lua 分配缓冲区?手册对此有点含糊。

最佳答案

经过一些研究和一些 RTFS,我已经解决了这个问题。我完全找错了树。

尽管 Lua API 引用说明 longjmp 用于错误处理,但 longjmp 缓冲区根本没有通过 API 公开。

要捕获 Lua 函数中的错误,您需要使用 lua_pcall()。我的代码示例可以这样重写并且有效:

lua_getfield(L, LUA_GLOBALSINDEX, "myfunction");

if(0 != lua_pcall(L, 0, 0, 0))
printf("Lua error: %s\n", lua_tostring(L, -1));
else
printf("Lua code ran OK.\n");

关于c - 使用 longjmp 在 Lua 中处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269994/

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