捕获所有异常

异常处理

local function check_data(data)
  if data == nil then
    error("data is nil", 0)
  end
  if #data == 0 then
    error("data is empty", 0)
  end
end

-- pcall(f, ...) calls f and catches any error:
-- false and the error value come back
local ok, err = pcall(check_data, nil)
-- ok = false
-- err = data is nil

-- An error raised by Lua itself is caught too
local _, lua_err = pcall(function()
  local data = nil
  return data.size
end)
-- lua_err = main.lua:19: attempt to index a nil
-- value (local 'data')

print("ok = " .. tostring(ok))
print("err = " .. err)
print("lua_err = " .. lua_err)