lua中的错误处理主要有几个方法:pcall() ; xpcall() ; error() ; assert()
测试代码如下:
--lua异常处理
------------pcall函数 抛出错误但是程序不会停止
--[[function method2()
print(a[2])
end
local a,b = pcall(method2)
if a then
print("函数没有错误")
else
print("函数有错误")
print(b) --打印出错误信息
end]]
----------------xpcall函数 抛出错误但是程序不会停止
--[[function method4()
print(a[1]) --输出 报错:attempt to index global 'a' (a nil value) method6 false
-- print(2) --输出 2 true
end
function method6()
print("method6")
end
function method5(err2)
print(err2)
method6()
end
local status = xpcall(method4,method5) --当发生错误时,调用第二个参数(一个错误处理函数)
print(status) --函数返回true或者false]]
---------------error函数 error(message,level) 遇到错误程序会停止
--[[
function method3()
local ming = io.read()
if ming ~="小明" then
-- error("我需要的是小明") --level=1(默认)/level=2 :调用error函数的位置(lua文件和对应的行号)
--error("我需要的是小明",0) -- level=0 :不添加错误位置信息
end
end
method3()]]
-----------------assert函数 assert(v,message) 遇到错误程序会停止
--[[
local ming = io.read()
assert(ming=="小明","我需要的时小明") --当参数v返回false时,报错并打印message信息
]]