Lua 在不退出的情况下捕获跟踪信息
我正在尝试运行一系列测试,并在每个测试中收集一些元数据。如果在其中一个测试期间出现错误,我希望保存回溯信息,但不退出脚本。例如:Lua 在不退出的情况下捕获跟踪信息,lua,Lua,我正在尝试运行一系列测试,并在每个测试中收集一些元数据。如果在其中一个测试期间出现错误,我希望保存回溯信息,但不退出脚本。例如: -- Example program for _, v in ipairs(tests) do --check some results of function calls if v == nil then --error("function X failed") no exit --save back trace to varia
-- Example program
for _, v in ipairs(tests) do
--check some results of function calls
if v == nil then
--error("function X failed") no exit
--save back trace to variable/file
-- continue with program
end
end
我目前不知道在lua中是否可以告诉函数error()
创建回溯跟踪后不停止。有什么想法吗?debug.traceback([thread,][message[,level]])
()是您需要的。您可以编写一个函数,该函数为1。获取回溯2。打开一个文件3。将回溯写入文件4。关闭文件
在这种情况下,您必须使用级别2,因为0将是debug.traceback
函数,1将是调用它的函数(即您的函数),2将是调用该函数的函数<代码>消息可能是您的错误代码。然后在脚本中本地重写error
函数,就完成了;调用error
只会记录错误,而不会退出程序
编辑:如果愿意,您还可以全局覆盖错误
,但如果在其他地方出现严重错误(不是您自己编写的代码),并且程序仍在继续,则可能会导致意外结果
您最好使用这样的构造:
if os.getenv 'DEBUG' then
my_error = function()
-- what I explained above
end
else
my_error = error
end
只要在您通常使用error
的所有地方使用my_error