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

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM