如何从Lua中访问Lua堆栈

我有一个简单的程序,它在 lua 文件上运行 luaL_dofile(我们称它为 'script.lua'),然后检查错误,再次运行文件,以此类推。如果在任何时候程序发现错误,它会将其写入日志并终止。问题是,script.lua 获取用户的输入,然后使用 loadstring 运行该字符串。我不想发生的事情(也确实发生了)是 loadstring 创建一个错误(因为用户输入了不正确的代码),然后 C++ 程序找到这个错误并终止程序。在我看来,防止 C++ 程序找到错误的最佳方法是从堆栈中删除它,但我不知道如何从 script.lua 访问 lua 堆栈。

点赞
用户4622917
用户4622917

显然问题一直都是我很傻。我修改了我的代码,这样它就会检测到错误然后打印出来,而不是使用 assert

脚本.lua 的例子:

以下代码不能正常工作:

local input = io.read()

assert(loadstring(input))()

以下代码可以正常工作:

local input = io.read()

output, error = loadstring(input)
if (output == nil) then
    print (error)
else
    output()
end
2015-08-12 21:28:08