前言
今天来看一个抛出错误的函数,不是函数出错了,而是这个函数就是用来抛出错误的,具体的是用方法就是在不允许出现错误的地方做判断,如果出错了抛出这个错误,禁止程序继续进行。
内容
error()
- 原型:error(message [, level])
- 解释:终止程序最后的?;ず⑶曳祷夭问?code>message所代表的字符串作为出错信息,函数本身没有返回值。一般函数
error()
会在错误信息的开头添加一些关于错误位置的信息,参数level
指定了怎样获得错误的位置。这个参数默认为1,表示错误位置是error()
函数被调用的地方。当参数level = 2
时表示错误位置在调用error()
函数的函数被调用的地方,依次类推。通过将参数level
设置为0可以避免在错误信息中添加额外的位置信息。
usage
- 首先我们新建一个文件将文件命名为errortest.lua然后编写代码如下:
-- 模拟错误消息
-- 第一测试
function print_message(str)
if str == nil then
error("prompt a error message, output message is nil", 0)
end
print("Lua output : "..str)
end
-- 正常调用
print_message("the ret is right!")
-- 错误调用
print_message()
-- 第二组测试
function print_error(type)
error("prompt a error message", type)
end
print_error(1)
-- 第三组测试
print_error(2)
- 运行结果
总结
- 注意参数
level
的使用,设置为0时可以避免错误信息中出现有关错误位置描述。 - 参数
level
表示对函数error()
调用的层级,数字越大表示调用的层级越深,类似于堆栈深度。 - 今天的例子不能一起执行,当运行一组示例时,请将其他
error()
函数的调用注释掉。 - 第一组示例函数
error()
一种常见的使用方法,为了怕后边的操作符..
与nil
连接,所以提前抛出确定的错误信息。 - 由第二组和第三组信息对比可以发现参数
level
的作用,注意错误信息中显示的出错的行数,其实就是显示不同调用层级的位置。