Lua语言学习-错误处理和调试

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

asset函数

错误处理
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库

  

posted @ 2019-05-09 17:59  orxx  阅读(516)  评论(0编辑  收藏  举报