環境
系統: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章