Код IT
← Каталог

Обработка ошибок в Lua — Создание универсальных обёрток

Фрагмент из «Обработка ошибок в Lua»: Создание универсальных обёрток.

Lua main.lua
local function safe_call(fn, ...)
    local ok, result = pcall(fn, ...)
    if ok then
        return true, result
    end
    print("Error:", tostring(result))
    return false, result
end

local function risky_op(x)
    if x < 0 then
        error("negative value")
    end
    return x * 2
end

local ok, result = safe_call(risky_op, -5)
local function safe_call(fn, ...)
    local ok, result = pcall(fn, ...)
    if ok then
        return true, result
    end
    print("Error:", tostring(result))
    return false, result
end

local function risky_op(x)
    if x < 0 then
        error("negative value")
    end
    return x * 2
end

local ok, result = safe_call(risky_op, -5)