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
error("...")lanza; nada debajo corre.pcall(f, args)devuelve ok más resultados o el mensaje.assert(nil, msg)convierte un nil en ese error.
Palabras clave y builtins usados aquí
assertenderrorfunctioniflocalpcallprintreturnthentostring
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.
Paso 2 de 3 en Patrones y errores; paso 21 de 27 en Fundamentos del lenguaje.