1. 语法错误,比如
a = b --~ b未定义 运行时错误 b = nil --~ 这里b没有初始化成功 a = 10 / b 手动抛出错误 --~ error函数抛出错误 error('error message',1) --~ 断言错误 assert(false, 'assert 错误')输出 “error” 2. xpcall xpcall接受“被监控”函数,错误处理函数和函数参数,发生错误时将调用错误处理函数,在错误处理函数中可通过debug.traceback()获取错误信息或debug.debug()进入错误检查见面。
local run = function(str) print('befor-->\t' .. str) error('error in here') print('after') end local handler = function() print('error') local trace = debug.traceback() print(trace) local d = debug.debug() print(d) end local result = xpcall(run, handler, 'hello') print(result)输出 error stack traceback: .\task2.lua:40: in function <.\task2.lua:38> .\task2.lua:32: in function <.\task2.lua:31> [C]: in function ‘xpcall’ .\task2.lua:53: in main chunk [C]: ?
