源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Lua中的异常处理pcall、xpcall、debug使用实例

  • 时间:2020-08-07 07:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Lua中的异常处理pcall、xpcall、debug使用实例
如果需要在Lua中处理错误,必须使用函数pcall(protected call)来包装需要执行的代码。 pcall接收一个函数和要传递个后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo
[u]复制代码[/u] 代码如下:
   if pcall(function_name, ….) then -- no error else -- some error end
简单示例
[u]复制代码[/u] 代码如下:
> =pcall(function(i) print(i) end, 33) 33 true    > =pcall(function(i) print(i) error('error..') end, 33) 33 false        stdin:1: error..
这里注意对返回值的逻辑判断
[u]复制代码[/u] 代码如下:
> function f() return false,2 end > if f() then print '1' else print '0' end 0
pcall以一种"保护模式"来调用第一个参数,因此pcall可以捕获函数执行中的任何错误。 通常在错误发生时,希望落得更多的调试信息,而不只是发生错误的位置。但pcall返回时,它已经销毁了调用桟的部分内容。Lua提供了xpcall函数,xpcall接收第二个参数——一个错误处理函数,当错误发生时,Lua会在调用桟展看(unwind)前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。 debug库提供了两个通用的错误处理函数: debug.debug:提供一个Lua提示符,让用户来价差错误的原因 debug.traceback:根据调用桟来构建一个扩展的错误消息
[u]复制代码[/u] 代码如下:
>=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33) 33 stack traceback: stdin:1: in function <stdin:1> [C]: in function 'error' stdin:1: in function <stdin:1> [C]: in function 'xpcall' stdin:1: in main chunk [C]: in ? false        nil
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部