如果luaL_load
函数失败,则根据文档(Lua5.1),错误消息被推送到堆栈上,可以使用lua_tostring(L, -1)
检索,但如果我想打印自定义错误消息,我认为我不能使用lua_Debug
(因为那是活动功能)。有没有其他方法(解析字符串除外)获取文件,行号和发生了什么错误?
- 感谢。
答案 0 :(得分:3)
luaL_loadfile
返回的错误代码会告诉您发生了什么类型的错误。您最有可能只对LUA_ERRSYNTAX
感兴趣,在这种情况下,堆栈上会留下详细的错误消息。这是错误的唯一记录。如果需要重新格式化,则需要解析它。
答案 1 :(得分:1)
在luaL_load()期间,堆栈上没有任何与加载脚本相关的技术。脚本中不执行或执行任何功能。它只是一个编译步骤,返回一个封装整个文件的函数或编译时发现的错误。
如果你得到一个函数,你执行它来实际运行脚本,这听起来像你真正感兴趣的。在这种情况下,你可以使用lua_pcall()并提供错误处理程序。在您的处理程序中,您可以通过lua_Debug获得预期的堆栈跟踪。