Volver a la página principal
jueves 3 octubre 2024
23

Cómo manejar errores con pcall() en Lua

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.

¿Cómo funciona pcall() en Lua?

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.

Sintaxis básica:

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.

Ejemplo simple de uso de 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.

Ejemplos de uso de pcall() en Lua

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

Referencias

Para más información, puedes consultar la documentación oficial de Lua en lua.org.

Etiquetas:
lua
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer