-- lua 错误处理方法:
--assert(param,msg) 可用在调式程序时查找错误。
function add(a,b)
assert(type(a) == "number","a is not number")
assert(type(b) ~= "number","b is not number")
end
--add(a,2) --这里执行后会输出 lua: test6.lua:5: a is not number 并给出错误的堆栈信息 终止程序
add(1) --若assert()第一个条件判断的参数为true,则assert不做任何处理
--error(msg [,level]) 终止正在执行的函数,并返回msg作为错误信息
--参数level的取值:
--Level=1[默认]:为调用error位置(文件+行号)
--Level=2:指出哪个调用error的函数的函数
--Level=0:不添加错误位置信息
function add2(a,b,c)
if(type(a) ~= "number") then error("a is not number") end
if(type(b) ~= "number") then error("b is not number",2) end
if(type(c) ~= "number") then error("c is not number",0) end
print("suc")
end
--add2(a) --这里执行后会输出 lua: test6.lua:14: a is not number 并给出错误的堆栈信息 终止程序
--add2(1,b) --这里执行后会输出 lua: test6.lua:23: b is not number
--add2(1,2,c) --这里执行后会输出 lua: c is not number
add2(1,2,3)
--pcall(func,...) 第一个参数是要检查错误的函数,后面的参数是函数func的参数
function add3(a,b)
return a+b
end
print(pcall(add3,1,b)) --false test6.lua:31: attempt to perform arithmetic on local 'b' (a nil value)
if(pcall(add3,1,b)) then
print("add3 is ok")
else
print("add3 is error")
end
--xpcall(func,debugFunc,...) 第一个参数是要检查错误的函数,第二个参数是处理错误信息的函数,后面的参数是函数func的参数
function add4(a,b)
return a+b
end
function debugFunc(err)
print(err) --test6.lua:43: attempt to perform arithmetic on local 'a' (a nil value)
print(debug.traceback()) --抛出错误信息,但不终止程序
end
print(xpcall(add4,debugFunc,a,b)) --false nil
print("aaa")
lua 错误处理
最新推荐文章于 2022-05-09 19:06:21 发布