Lua中是否有一个函数会尝试加载另一个Lua文件并捕获任何语法错误?我找不到任何不仅捕获异常的东西。解决方案是在我的项目中包含Lua解析器吗?
答案 0 :(得分:2)
loadfile
与load
/ loadstring
一样,在存在语法错误时返回nil
和错误消息:
Source:如果没有语法错误,则将已编译的块作为函数返回;否则,将其返回。否则,返回nil和错误消息。
local success, syntaxError = loadfile("myfile.lua")
if not success then
print("There was a syntax error:", syntaxError)
else
print("No syntax error")
end
pcall
不会引发错误,因此不需要loadstring
。
答案 1 :(得分:1)
我很傻,答案很明显:
pcall(function()
loadfile("path/to/file")
end)
编辑:如Egor Skriptunoff在评论中所指出的,一种更有效的解决方案:
pcall(loadfile, "path/to/file")
之所以行之有效,是因为pcall
的第一个参数之后的所有参数都作为传递给pcall
的第一个参数的参数(在本例中为loadfile
)传递。