typestar

pcall en Lua

error lanza; pcall atrapa y lo vuelve un retorno de estado.

-- error raises; pcall catches and turns it into a status return.
local function open_door(name)
  if name == "vault" then
    error("sealed by the old wards")
  end
  return name .. " creaks open"
end

local ok, result = pcall(open_door, "cellar")
print(ok, result)

local ok2, err = pcall(open_door, "vault")
if not ok2 then
  print("Blocked: " .. err)
end

-- assert converts a nil-and-message pair into an error.
local ok3 = pcall(function() assert(nil, "no torch lit") end)
print("Assert survived: " .. tostring(ok3))

Cómo funciona

  1. error("...") lanza; nada debajo corre.
  2. pcall(f, args) devuelve ok más resultados o el mensaje.
  3. assert(nil, msg) convierte un nil en ese error.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
510
Tokens
102
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 94 segundos.

Escribe este fragmento

Paso 2 de 3 en Patrones y errores; paso 21 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →