La función pcall()
en Lua se utiliza para ejecutar un bloque de código de manera segura, capturando posibles errores que puedan ocurrir durante su ejecución. Esta función devuelve un estado de éxito (true o false) y, opcionalmente, el valor devuelto o el mensaje de error, permitiendo gestionar excepciones de forma sencilla.
pcall
(abreviatura de *protected call*) protege un bloque de código que puede causar un error. En lugar de interrumpir el programa al encontrar un error, pcall()
captura el problema y permite que el programa continúe.
local estado, resultado = pcall(funcion, argumentos)
estado
: Retorna true
si no se produce un error y false
si ocurre un error.
resultado
: Devuelve el valor de la función ejecutada o el mensaje de error.
pcall()
:
local function dividir(a, b)
return a / b
end
local estado, resultado = pcall(dividir, 10, 0)
if estado then
print("Resultado: " .. resultado)
else
print("Error: " .. resultado) -- Mensaje de error: division by zero
end
En este caso, pcall()
detecta el error de división por cero y evita que el programa se interrumpa.
1. Manejo de funciones inseguras:
local estado, valor = pcall(function()
error("Esto es un error intencionado")
end)
if not estado then
print("Capturado: " .. valor) -- Salida: Capturado: Esto es un error intencionado
end
2. Ejecución de código con acceso a variables globales:
local function suma(a, b)
return a + b + variable_no_definida
end
local ok, res = pcall(suma, 5, 7)
print(ok) -- false
print(res) -- Mensaje de error indicando variable no definida
Para más información, puedes consultar la documentación oficial de Lua en lua.org.
Jorge García
Fullstack developer