lua中xpcall實現try catch功能

2022-07-18 06:06:07 字數 807 閱讀 1945

local status, msg = xpcall(main, __g__trackback__)

-- for ccluaengine traceback

function __g__trackback__(msg)

local message = debug.traceback(msg, 3)

if qy.debug then

self:showbugmesg("lua error:\n\t" .. message)

end-- 上報異常日誌

require("utils.analytics"):oncrash(message)

print("----------------------------------------")

print("錯誤資訊\nlua error:\n\t" .. message)

print("----------------------------------------")

return msg

end

xpcall 接受兩個引數:呼叫函式、錯誤處理函式。

當錯誤發生時,lua會在棧釋放以前呼叫錯誤處理函式,因此可以使用debug庫收集錯誤相關資訊。

常用的debug處理函式:debug.debug和debug.traceback,

前者給出lua的提示符,你可以自己動手察看錯誤發生時的情況;

後者通過traceback建立更多的錯誤資訊,也是控制台直譯器用來構建錯誤資訊的函式。

你可以在任何時候呼叫debug.traceback獲取當前執行的traceback資訊。

lua以xpcall實現try catch功能

列印錯誤資訊 local function trackback errmsg local track text debug.traceback tostring errmsg 6 print trackback print track text,lua error print trackback l...

lua以xpcall實現try catch功能

列印錯誤資訊 local function trackback errmsg local track text debug.traceback tostring errmsg 6 print trackback print track text,lua error print trackback l...

lua中實現繼承

什麼是元表 元表像是乙個 操作指南 裡面包含了一系列操作的解決方案,例如 index方法就是定義了這個表在索引失敗的情況下該怎麼辦。index元方法 很多人對此都有誤解,這個誤解是 如果a的元表是b,那麼如果訪問了乙個a中不存在的成員,就會訪問查詢b中有沒有這個成員。而這個理解是完全錯誤的,實際上,...