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