菜鸟教程 https://www.runoob.com/lua/lua-error-handling.html

asset函数

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
错误处理
local function add(a,b)
   assert(type(a) == "number", "a 不是一个数字")
   assert(type(b) == "number", "b 不是一个数字")
   return a+b
end
add(10)
--实例中assert首先检查第一个参数,若没问题,assert不做任何事情;否则,assert以第二个参数作为错误信息抛出。

error函数

  error (message [, level])
  error("巴拉巴拉")
  终止正在执行的函数,并返回message的内容作为错误信息

 

pcall

  pcall接收一个函数和要传递给后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo。

  pcall以一种"保护模式"来调用第一个参数,但是发送错误时,无法获得更多的错误调用信息

pcall(function(i) print(i) end, 33)

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

 

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

  常用的print(debug.traceback(),根据调用桟来构建一个扩展的错误消息

  关于debug更多内容,参看debug库

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄