lua xpcall函数学习

xpcall 接受两个参数:调用函数、错误处理函数。

当错误发生时,Lua会在栈释放以前调用错误处理函数,因此可以使用debug库收集错误相关信息。

常用的debug处理函数:debug.debug和debug.traceback,

前者给出Lua的提示符,你可以自己动手察看错误发生时的情况;

后者通过traceback创建更多的错误信息,也是控制台解释器用来构建错误信息的函数。

你可以在任何时候调用debug.traceback获取当前运行的traceback信息。

[plain]view plaincopy

  1. function traceback( msg )
  2. print("----------------------------------------")
  3. print("LUA ERROR: " .. tostring(msg) .. "\n")
  4. print(debug.traceback())
  5. print("----------------------------------------")
  6. end
  7. local function main()
  8. -- ....
  9. print("hello")
  10. end
  11. xpcall(main, traceback)