Lua
中的error
函数定义:
error (message [, level])
打印出message
后,会终止程序运行。关于level
的含义,参考下面例子理解会更清楚(test.lua
):
function f0()
error("Error!")
end
function f1()
f0()
end
function f2()
f1()
end
f2()
执行如下:
lua: test.lua:2: Error!
stack traceback:
[C]: in function 'error'
test.lua:2: in function 'f0'
test.lua:6: in function 'f1'
test.lua:10: in function 'f2'
test.lua:13: in main chunk
[C]: in ?
默认情况下,level
值为1
。“lua: test.lua:2: Error!
”把错误位置指向了脚本的第2
行。把f0
函数修改一下:
function f0()
error("Error!")
end
再次执行,输出如下:
lua: test.lua:6: Error!
stack traceback:
[C]: in function 'error'
test.lua:2: in function 'f0'
test.lua:6: in function 'f1'
test.lua:10: in function 'f2'
test.lua:13: in main chunk
[C]: in ?
这次错误位置指向了脚本的第6
行(“lua: test.lua:6: Error!
”),也就是f1()
函数,可以看到level
指定了发生错误时,应该输出函数调用栈的哪一级函数。
assert
函数定义如下:
assert (v [, message])
即v
是假(nil
或false
)时,调用error
函数,否则返回所有所有参数。其中message
默认值是"assertion failed!"
。举例如下:
function f0()
assert(nil, "Assert!")
end
f0()
输出如下:
lua: test.lua:2: Assert!
stack traceback:
[C]: in function 'assert'
test.lua:2: in function 'f0'
test.lua:13: in main chunk
[C]: in ?