我有一个简单的程序,它在lua文件上运行luaL_dofile (让我们称它为'script.lua',然后检查错误,然后再次运行该文件,等等。如果程序在任何时候发现错误,它会将其写入日志,然后终止。问题是,script.lua获得用户的输入,然后使用loadstring运行该字符串。我不想发生的事情(以及发生的事情)是由loadstring创建一个错误(因为用户输入了不正确的代码),那么C++程序就会发现这个错误并终止程序。在我看来,防止C++程序发现错误的最佳方法是从堆栈中删除它,但我不知道如何从script.lua中访问lua堆栈。
发布于 2015-08-12 21:28:08
很明显问题是我一直都很傻。我更改了代码,以便它检测错误,然后打印出来,而不是使用assert。
Script.lua的示例:
这是不正确的:
local input = io.read()
assert(loadstring(input))()这样做是正确的:
local input = io.read()
output, error = loadstring(input)
if (output == nil) then
print (error)
else
output()
endhttps://stackoverflow.com/questions/31975206
复制相似问题