如何通过单个lua脚本运行多个lua脚本,即使其中一个脚本失败。

如果 m.lua 由于某些问题失败,p.lua 将根本不会运行,请给我一些解决方案,使我即使第一个文件失败也能运行两个文件并拥有两个文件的日志。

dofile("x/y/m.lua")
if not m then
  print("Error in m.lua")
end

dofile("x/y/p.lua")
if not p then
  print("Error in p.lua")
end
点赞
用户107090
用户107090

尝试

function dofile(name)
  local f,err=loadfile(name)
  if f==nil then print(err) end
  local ok,err=pcall(f)
  if not ok then print(err) end
end
2013-04-30 12:08:32
用户1642975
用户1642975

使用 pcall 来捕获 Lua 错误, 例如:

local success, result = pcall(dofile, "foo.lua")

如果 success 为 false,函数执行失败,错误信息将存储在 result 中。如果 success 为 true,dofile 的返回值将存储在 result 中。你可以添加额外的 result 变量。例如:

local success, result1, result2, result3 = pcall(dofile, "foo.lua")
2013-04-30 18:47:43