local function f(x, y)
    print("f args: ", x, y)
    error("f error") -- raise error
end

-- 1
local function error_handler(err)
    print(err)
    return debug.traceback()
end

local ok, errmsg = xpcall(f, error_handler, 1, 2)
if not ok then
    print(errmsg)
end

-- 2
local ok, errmsg = xpcall(f, debug.traceback, 1, 2)
if not ok then
    print(errmsg)
end