Lua base error()

产生错误.jpg

前言

今天来看一个抛出错误的函数,不是函数出错了,而是这个函数就是用来抛出错误的,具体的是用方法就是在不允许出现错误的地方做判断,如果出错了抛出这个错误,禁止程序继续进行。

内容


error()

  • 原型:error(message [, level])
  • 解释:终止程序最后的保护函数,并且返回参数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)
  • 运行结果
base_error.png

总结

  • 注意参数level的使用,设置为0时可以避免错误信息中出现有关错误位置描述。
  • 参数level表示对函数error()调用的层级,数字越大表示调用的层级越深,类似于堆栈深度。
  • 今天的例子不能一起执行,当运行一组示例时,请将其他error()函数的调用注释掉。
  • 第一组示例函数error()一种常见的使用方法,为了怕后边的操作符..nil连接,所以提前抛出确定的错误信息。
  • 由第二组和第三组信息对比可以发现参数level的作用,注意错误信息中显示的出错的行数,其实就是显示不同调用层级的位置。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容