pcall
以保护模式调用函数, 返回true/false, errinfo:
function test() print("hello world") error("wrong value") end pcall(test) -- => false, xxxx.lua: 20: wrong value
xpcall
pcall发生错误时, 直接返回errinfo, 但没有保存栈信息, 栈信息可以通过下面的函数来获得, 第一个参数是描述string, n是保存的栈层数;
debug.traceback("description...",n)以该栈信息函数结合xpcall, 作为xpcall的第二个参数: 错误处理函数, 就可以追踪栈信息:
function errhander(e) print("error info: " .. e) print("stack info: " .. debug.traceback("current 2 stack: " ,2)) end function ef() error("wrong value") end xpcall(ef,errhander) --=>打印出errinfo 和 相应的栈信息
本文介绍了Lua中处理运行时错误的方法,包括使用pcall和xpcall进行保护调用,以及如何通过debug.traceback获取详细的错误栈信息。
1万+

被折叠的 条评论
为什么被折叠?



