La función error()
Parte de la sección Lógica y flujo del Journey de Lua de Coddy. Lección 32 de 54.
A veces, tu código necesita detenerse inmediatamente cuando algo sale mal. Lua proporciona la función error() para gestionar estas situaciones, generando un error y deteniendo la ejecución del script.
La función error() recibe un mensaje como argumento y detiene el programa, mostrando ese mensaje para indicar qué salió mal. Esta es la sintaxis básica:
error("Something went wrong!")Esto es especialmente útil al validar las entradas de una función. Por ejemplo, si una función espera un número positivo pero recibe uno negativo, puedes usar error() para impedir que la ejecución continúe:
function calculateSquareRoot(num)
if num < 0 then
error("Cannot calculate square root of a negative number")
end
return math.sqrt(num)
endCuando se llama a error(), el programa se detiene inmediatamente en ese punto y muestra tu mensaje de error personalizado. Esto te ayuda a detectar problemas pronto y a comunicar claramente qué salió mal, lo que hace que tu código sea más fiable y fácil de depurar.
error() sirve para errores reales, como cuando se llama a una función con el tipo de valor incorrecto. Para los fallos que quien llama debería prever, como un elemento ausente o datos incorrectos del usuario, el código Lua normalmente no genera un error. En su lugar, la función devuelve nil y un mensaje, y quien llama comprueba el resultado:
function findItem(inventory, name)
if inventory[name] == nil then
return nil, "No item called " .. name
end
return inventory[name]
end
local count, err = findItem({potion = 3}, "sword")
if count then
print("You have " .. count)
else
print(err) -- No hay ningún objeto llamado sword
endLas propias funciones de Lua funcionan igual: tonumber("abc") devuelve nil, e io.open() devuelve nil y un mensaje cuando no puede abrir un archivo.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altasPractica por tu cuenta: Compilador de Lua online