lua-错误处理

    技术2025-06-10  26

    --错误 --语法错误:因为对程序组件(如 运算符、表达式)使用不当造成的 --双等于号是关系运算符,不是赋值 b==1 print() --缺少do for i=1,10 print(i) end --运行错误:程序可以正常执行,但会输出报错信息 function sum(a,b) return a+b end add(5) --错误处理:assert函数:类似检查 function sum2(a,b) assert(type(a)=="number","a 不是数字") assert(type(b)=="number","b 不是数字") return a+b end add(10) --错误处理:error函数:终止正在执行的函数,并返回message的内容作为错误信息 --error(message[,level]) --Level=1[默认]:为调用error位置(文件+行号) --Level=2:指出哪个调用error的函数的函数 --Level=0:不添加错误位置信息 function mode(a,b) if(b==0) then error("发生错误",2) else return a/b end end --错误处理:pcall 可以使用函数pcall(protected call)来包装需要执行的代码。pcall接收一个函数和要传递给后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo。 --注意:只是知道发生错误的位置 function test1(c) print("a") print(a[1])--出现错误 end if pcall(test1,c) then print("程序继续") else print("程序发生错误") end print("继续执行") --错误处理:xpcall函数:xpcall接收第二个参数——一个错误处理函数,当错误发生时,Lua会在调用桟展开(unwind)前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。 --debug库 --debug.debug:提供一个Lua提示符,让用户来检查错误的原因 --debug.traceback:根据调用桟来构建一个扩展的错误消息 function test2() n = n/nil end function errorHandler(err) print("ERROR:",err) end status = xpcall(test2,errorHandler) print(status)
    Processed: 0.009, SQL: 9