1. 程式人生 > >lua的異常處理機制

lua的異常處理機制

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資訊
]]