1

我已经在我的 C 程序中嵌入了一个 Lua 解释器,并且我有一个简单的问题,我似乎无法找到一个明确的答案。

假设我有一个暴露给 Lua 的 C 函数,如下所示:

static int calculate_value(lua_State *L) 
{
    double x = luaL_checknumber(L, 1);
    return 0;
}

如何确定(在 C 中,在调用此函数之后)Lua 在调用 luaL_checknumber 时抛出错误?堆栈顶部是否有错误消息?是否有其他指示错误已被抛出?

4

2 回答 2

2

一般来说,你不会。抛出错误的 Lua 函数使用setjmp/longjmp(或编译为 C++ 时的异常)将控制权返回给调用 Lua 运行时。错误将呈现给调用您的函数的 Luacalculate_value函数。

如果你想以不同的方式处理参数错误,你不能使用 Lua 的luaL_check*函数。

于 2012-06-26T05:46:58.207 回答
1

如果该函数是通过 Lua 调用的,则可以使用pall. 或者lua_pcall在运行调用该函数的 Lua 脚本之前使用。

于 2012-06-26T12:17:43.577 回答