一、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 可以避免这种
Lua学习笔记11:Lua错误处理
最新推荐文章于 2025-03-09 11:37:49 发布