ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 断言 assert ``` local function add(a,b) assert(type(a) == "number", "a 不是一个数字") assert(type(b) == "number", "b 不是一个数字") return a+b end add(10) ``` ## 错误 error ``` error (message [, level]) ``` 功能:终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回) 通常情况下,error会附加一些错误位置的信息到message头部。 Level参数指示获得错误的位置: * Level=1\[默认\]:为调用error位置(文件+行号) * Level=2:指出哪个调用error的函数的函数 * Level=0:不添加错误位置信息 示例 ``` local function add(a,b) if type(a) ~= "number" then error("a not a number",2) end if type(b) ~= "number" then error("b not a number",2) end return a+b end add(10,"123") ``` ## pcall 和 xpcall、debug pcall ``` function add(a, b) if type(a) ~= "number" then error("a is not a number") end if type(b) ~= "number" then error("b is not a number") end return a+b end if pcall(add, 1,"2") then print("success") else print("have error") end // have error ``` xpcall ``` function add(a, b) if type(a) ~= "number" then error("a is not a number") end if type(b) ~= "number" then error("b is not a number") end return a+b end function myerrorhandle(err) print("error:",err) end status = xpcall(function() add(1,"2") end,myerrorhandle) print(status) -- error: demo1.lua:12: b is not a number -- false ```