日落20200229001 - Lua之檢驗外部函數

環境

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章