lua中的pcall和xpcall函数的使用

参考网址:https://www.runoob.com/lua/lua-error-handling.html

pcall函数的使用:
举例1:正确调用情况:

function addNumbers(a, b)
	print("number is")
	return a + b
end

local res, info = pcall(addNumbers, 1, 20)
print(res)
print(info)

这是正常的情况下,调用。
参数说明:
pcall的第一个参数是函数的名字;
pcall的后面的参数是给函数的传递的参数列表,可以是多个,也可以是变长的参数…

上面执行的结果是:
在这里插入图片描述
其中res记录是执行函数是否正确,返回true或者false。第二个返回值为函数的执行结果,这里返回的是21

举例2:错误调用情况

function addNumbers(a, b)
	print("number is")
	return a + b
end

local res, info = pcall(addNumbers, 1)
print(res)
print(info)

这里我们只给addNumbers函数传递了一个参数1,这样在a+b的时候,b为nil,此时就会报错。
在这里插入图片描述
这里的res为false,说明函数执行出错了。
info为提示信息,说执行了nil加法。

ok,其实pcall已经够用了,有调用出错的提示信息了。

但是lua还提供xpcall。
xpcall和pcall的区别最大的地方是,可以传递一个出错的函数。
举例1:正确调用情况

function addNumbers(a, b)
	print("number is")
	return a + b
end

function errorFunction(err)
	print(err)
	print(debug.traceback())
end

local res, info = xpcall(addNumbers, errorFunction, 1, 2)
print(res)
print(info)

在这里插入图片描述
同样的res记录的是调用函数是否正确的返回,info记录的是调用函数的返回结果,这里为3。

举例2:错误调用情况

function addNumbers(a, b)
	print("number is")
	return a + b
end

function errorFunction(err)
	print(err)
	print(debug.traceback())
end

local res, info = xpcall(addNumbers, errorFunction, 1)
print(res)
print(info)

在这里插入图片描述

这里使用了:

debug.debug:提供一个Lua提示符,让用户来检查错误的原因
debug.traceback:根据调用桟来构建一个扩展的错误消息

这里使用debug.debug和debug.traceback来打印出错堆栈信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值