Lua 错误处理

思路

今天做功能遇到一个问题,因为项目使用LuaFramework,组件如果想在lua使用使用要额外导出,而在lua代码里面不知道这个组件是否已经被导出,又因为变量引用还没来得及判空就直接报错。这时候候就只能使用错误处理了,之前没怎么用过,这次用了就记录一下

pcall

描述

以一种"保护模式"来调用第一个参数,因此pcall可以捕获函数执行中的任何错误。
第一个参数要传入一个函数,后面是函数所用的参数,运行中,会执行传入的函数,返回两结果是一个布尔指,表示是否正常运行无报错

用法

if pcall(function_name, ….) then
-- 没有错误
else
-- 一些错误
end

xpcall

描述

Lua提供了xpcall函数,xpcall接收第二个参数——一个错误处理函数,当错误发生时,Lua会在调用桟展开(unwind)前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。

用法

function myfunction ()
   n = n/nil
end

function myerrorhandler( err )
   print( "ERROR:", err )
end

status = xpcall( myfunction, myerrorhandler )
print( status)

Debug

描述

Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。
这个比较复杂,以后用到再补充,先不赘述了,有兴趣的参考
Lua 调试(Debug)

总结

pcall已经足够我的需求,其实就是一个防报错处理,但是不知道这个的效率消耗是怎么样的,后面看看lua源码了解一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值