环境
系统:Windows 10
引擎:Lua5.3.5
目的
通过加载文件的方式,对外部Lua块,进行检验,并打印函数的检验信息。
实例
(1)添加文件 external_func.lua
function func1()
assert(1 == 2, "bbb")
assert(io.open("faa.lua", "r"))
end
(2)添加文件 error_test.lua
----------------------loadfile--------------------------
f = loadfile("external_func.lua")
print(func1)
f()
----------------------pcall--------------------------
local status, err = pcall(func1)
if status then
print("all right")
else
print("message: " .. err)
end
----------------------xpcall--------------------------
local xstatus, xerr = xpcall(func1, function() return "function error" end)
if xstatus then
print("all right")
else
print("message: " .. xerr)
end
(3)保证以上文件同级,然后运行 error_test.lua
结果
nil
message: external_func.lua:2: bbb
message: function error
[Finished in 0.2s]
说明
首先要调用一次loadfile加载返回的对象,即第5行: f(),在此前外部文件的函数是还没加载进来的,如结果的第1行所示。
pcall和xcall都有相似功能,但xpcall可以在第二个参数加入一个函数,以作检验信息进行回调。
以上简单回顾。
参考资料:
《Lua程序设计(第二版)》第8章