Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Error handling 如何正确打印来自“luaL_dostring()”的错误消息?_Error Handling_Lua - Fatal编程技术网

Error handling 如何正确打印来自“luaL_dostring()”的错误消息?

Error handling 如何正确打印来自“luaL_dostring()”的错误消息?,error-handling,lua,Error Handling,Lua,下面是我的代码,它以字符串形式运行Lua脚本 bool doString(const char *s) { const int ret = luaL_dostring(L, s); if (ret) { if (ret == LUA_ERRSYNTAX) printf("Error: %s", lua_tostring(L, -1)); else if (ret == LUA_ERRMEM)

下面是我的代码,它以字符串形式运行Lua脚本

bool doString(const char *s)
{
    const int ret = luaL_dostring(L, s);
    if (ret)
    {
        if (ret == LUA_ERRSYNTAX)
            printf("Error: %s", lua_tostring(L, -1));
        else if (ret == LUA_ERRMEM)
            printf("Error: memory error");
        else
            printf("Error: syntax error");
        return false;
    }
    return true;
}
但在许多情况下,我的代码只是打印
Error:syntax Error
,而没有进一步描述错误发生的位置


如何正确打印错误消息,使其更具描述性?

luaL\u dostring
成功时返回
LUA\u OK/*0*/
,失败时返回
1
[1]。当它失败时,它将在堆栈上推送一条描述问题的错误消息。这可以通过以下方式确定:在文档[2]中,按照
lua\u loadstring
lua\u loadstring
。另外,
luaL\u dostring
调用
lua\u pcall
,当错误对象失败时(未设置处理程序)[3]

当得到非零结果时,可以检查堆栈顶部的错误消息,并打印:

booldostring(常量字符*s){
常数int ret=luaL_dostring(L,s);
如果(ret!=LUA_OK){
printf(“错误:%s\n”,lua_tostring(L,-1));
lua_pop(L,1);//pop错误消息
返回false;
}
返回true;
}
  • [1]
  • [2]
  • [3]

为什么是国际单项体育联合会?当出现错误时,只需打印lua\u tostring(L,-1)。