Lua中assert( )函数的使用

Posted yunlongaimeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua中assert( )函数的使用相关的知识,希望对你有一定的参考价值。

当Lua遇到不期望的情况时就会抛出错误,比如:两个非数字进行相加;调用一个非函数的变量;访问表中不存在的值等。你也可以通过调用error函数显示的抛出错误,error的参数是要抛出的错误信息。
assert(a,b) a是要检查是否有错误的一个参数,b是a错误时抛出的信息。第二个参数b是可选的。

 

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()是普通函数,他首先计算两个参数,然后在调用函数,如:

n = io.read()
assert(tonumber(n), "invalid input:" .. n .. "is not a number")

 

先进行tonumber(n), "invalid input:" .. n .. "is not a number"这两个参数的计算。

没用assert( )时:

input = io.read("*number")
print(input)

 

运行结果:

nil
[Finished in 0.3s]

用assert( )时:

input = assert(io.read("*number"))
print(input)

运行结果:

lua: D:UserProfilesBenLuoDesktopstudy	est.lua:44: assertion failed!
stack traceback:
    [C]: in function ‘assert‘
    D:UserProfilesBenLuoDesktopstudy	est.lua:44: in main chunk
    [C]: ?
[Finished in 0.3s with exit code 1]

以上是关于Lua中assert( )函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

lua基础

Lua中的基本函数库

一些LUA函数

Lua 学习笔记之四(Lua中的基本函数库)

读lua代码,帮我翻译成很容易理解的话,谢谢! function FileSaveLoad()

在Pandoc lua过滤器中连接字符串片段