如果luaL_loadfile失败,则获取错误信息。

如果 luaL_load 函数失败,则根据文档(Lua5.1),错误信息 将被推入堆栈,并可以通过 lua_tostring(L, -1) 检索,但如果我想打印自定义的错误消息,我认为我不能使用 lua_Debug(因为它是用于_活动函数_的)。除了解析字符串以外,是否有其他方式可以获取 文件_、_行号发生的错误

点赞
用户2633831
用户2633831

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

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

2013-10-03 11:39:47
用户107090
用户107090

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

2013-10-03 11:51:42