2

如果luaL_load函数失败,那么根据文档(Lua5.1),错误消息被推送到堆栈上并且可以使用 检索lua_tostring(L, -1),但是如果我想打印自定义错误消息,我认为我不能使用 lua_Debug(因为那是为了主动功能)。有没有其他方法(除了解析字符串)来获取文件行号以及发生了什么错误

- 谢谢。

4

2 回答 2

3

返回的错误代码luaL_loadfile告诉你发生了什么样的错误。您很可能只对 感兴趣LUA_ERRSYNTAX,在这种情况下,堆栈上会留下详细的错误消息。这是错误的唯一记录。如果需要重新格式化,则需要对其进行解析。

于 2013-10-03T11:51:42.817 回答
1

在 luaL_load() 期间,堆栈上没有与脚本加载相关的技术内容。脚本中不执行或执行任何功能。它只是一个编译步骤,返回一个封装整个文件或编译过程中发现的错误的函数。

如果你得到一个函数,你执行它来实际运行脚本,这听起来像是你真正感兴趣的。在这种情况下,你可以使用 lua_pcall() 并提供一个错误处理程序。然后,在您的处理程序中,您将通过 lua_Debug 获得预期的堆栈跟踪。

于 2013-10-03T11:39:47.803 回答