Lua 错误处理
2019-03-23 本文已影响0人
CodeVin
可以使用 assert 和 error 两个函数来处理错误。
assert函数
若函数的第一个参数条件不成立,则会以第二个参数作为错误信息抛出
assert(condition, message)
error函数
终止正在执行的函数,返回 message 作为内容的错误信息
error (message [, level])
pcall 和 xpcall
pcall 函数接受一个函数类型的参数和要传递给这个函数的参数,并执行这个函数,如果异常返回false,否则返回true
if pcall(function_name, …) then
-- 没有错误
else
-- 一些错误
end
xpcall 函数的第二个参数则为错误发生时的处理函数
function myfunction ()
n = n/nil
end
function myerrorhandler( err )
print( "ERROR:", err )
--另外可以在这里通过输出 debug.traceback 获取堆栈调用错误信息
end
status = xpcall( myfunction, myerrorhandler )
print( status)
--执行结果:
--ERROR: test2.lua:2: attempt to perform arithmetic on global 'n' (a nil value)
--false