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
上一篇 下一篇

猜你喜欢

热点阅读