Lua学习笔记11:Lua错误处理

一、Errare humanum est(拉丁谚语:犯错是人的本性)。所以我们要尽可能的防止错误的发生,Lua 经常作为扩展语言嵌入在别的应用中,所以不能当错误发生时简单的崩溃或者退出。相反,当错误发生时 Lua 结束当前的 chunk 并返回到应用中。
当 Lua 遇到不期望的情况时就会抛出错误,比如:两个非数字进行相加;调用一个非函数的变量;访问表中不存在的值等(可以通过 metatables 修改这种行为,后面会介绍)。
你也可以通过调用 error 函数显示的抛出错误,error 的参数是要抛出的错误信息。
例:
print "enter a number:"
n = io.read("*number") 
if not n then error("invalid input") end
Lua 提供了专门的内置函数 assert 来完成上面类似的功能:
print "enter a number:"
n = assert(io.read("*number"), "invalid input") 
assert 首先检查第一个参数是否返回错误,如果不返回错误 assert 简单的返回,否则assert 以第二个参数抛出错误信息。第二个参数是可选的。注意 assert 是普通的函数,他会首先计算两个参数然后再调用函数,所以以下代码:
n = io.read() 
assert(tonumber(n), "invalid input: " .. n .. " is not a number") 
将会总是进行连接操作,使用显示的 test 可以避免这种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值