lua中xpcall实现try/catch功能


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信息。

  

posted @ 2017-06-06 10:38  木水枫  阅读(2311)  评论(0编辑  收藏  举报