Error handling 如何正确打印来自“luaL_dostring()”的错误消息?
下面是我的代码,它以字符串形式运行Lua脚本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)
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]