lua 错误处理

-- 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")




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值