xpcall接受两个参数:调用函数、错误处理函数。 当错误发生时,Lua会在栈释放以前调用错误处理函数,因此可以使用debug库收集错误相关信息。 常用的debug处理函数:debug.debug和debug.traceback, 前者给出Lua的提示符,你可以自己动手察看错误发生时的情况; 后者通过traceback创建更多的错误信息,也是控制台解释器用来构建错误信...
为了解决这个问题,lua提供了xpcall函数。当这个函数被调用的时候,错误处理函数作为第二个参数。当错误发生的时候,lua在出栈之前会调用这个error处理函数,有两个错误处理函数,debug.debug和debug.traceback函数,当error发生的时候,debug.debug给你一个lua提示。而如果调用debug.traceback的时候,建立了可以追溯函数调用错误...
functionaddNumbers(a,b)print("number is")returna+bendfunctionerrorFunction(err)print(err)print(debug.traceback())endlocalres,info=xpcall(addNumbers,errorFunction,1,2)print(res)print(info) 同样的res记录的是调用函数是否正确的返回,info记录的是调用函数的返回结果,这里为3。 举例2:错误调用情况 functio...
Lua提供了xpcall来实现这个功能,xpcall接受两个参数:调用函数、错误处理函数。当错误发生时,Lua会在栈释放以前调用错误处理函数,因此可以使用debug库收集错误相关信息。 有两个常用的debug处理函数:debug.debug和debug.traceback,前者给出Lua的提示符,你可以自己动手察看错误发生时的情况;后者通过traceback创建更多的错误信...
当pcall返回的时候,它销毁了一部分函数的调用过程。为了解决这个问题,lua提供了xpcall函数。当这个函数被调用的时候,错误处理函数作为第二个参数。当错误发生的时候,lua在出栈之前会调用这个error处理函数,有两个错误处理函数,debug.debug和debug.traceback函数,当error发生的时候,debug.debug给你一个lua提示。而如果...
例如,你可以使用`xpcall(function()...end,debug.traceback)`来获取函数的调用堆栈信息,以便更好地诊断问题。 三、注意事项 在使用xpcall时,需要注意以下几点: 1.xpcall只能捕获由xpcall自身抛出的异常。它不能捕获其他函数或代码块中发生的异常。 2.xpcall不会阻止函数的正常执行。它只是将异常的处理逻辑推迟到...
debug.traceback:根据调⽤桟来构建⼀个扩展的错误消息 复制代码代码如下:>=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33)33 stack traceback:stdin:1: in function <stdin:1> [C]: in function 'error'stdin:1: in function <stdin:1> [C...
> status, err, ret = xpcall(square, debug.traceback, 10) > status false > err stdin:2: attempt to perform arithmetic on a string value stack traceback: stdin:2: in function 'square' [C]: in function 'xpcall' stdin:1: in main chunk [C]: in ? > ...
-- 定制日志输出, xpcall错误处理函数 -- 函数中不能使用ngx.exit等操作 -- @param _errmsg 异常信息 --]] function _M.write_error(_errmsg) _M.track_text = debug.traceback(tostring(_errmsg), 6) ngx.log(ngx.ERR, _M.track_text)
debug.traceback:根据调用C来构建一个扩展的错误消息 代码如下: >=xpcall(function(i) print(i) error('error..') end, function() print(debug.traceback()) end, 33) 33 stack traceback: stdin:1: in function <stdin:1> [C]: in function 'error' ...