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库