La gestió d'errors és una part fonamental de qualsevol llenguatge de programació, i REXX no és una excepció. En aquest tema, aprendrem com REXX maneja els errors i com podem escriure codi robust que pugui gestionar situacions inesperades de manera elegant.

Conceptes Clau

  1. Tipus d'Errors en REXX:

    • Errors de Sintaxi: Errors que es produeixen quan el codi no segueix les regles de sintaxi del llenguatge.
    • Errors d'Execució: Errors que es produeixen durant l'execució del programa, com ara intentar dividir per zero o accedir a un fitxer inexistent.
    • Errors Lògics: Errors en la lògica del programa que fan que el codi no funcioni com s'esperava.
  2. Instruccions de Gestió d'Errors:

    • SIGNAL: Utilitzada per generar un error o per capturar errors específics.
    • CALL ON ERROR: Utilitzada per definir una rutina d'error que s'executarà quan es produeixi un error.

Exemples Pràctics

Exemple 1: Utilitzant SIGNAL per Capturar Errors

/* Exemple de gestió d'errors amb SIGNAL */
signal on syntax name ErrorHandler
signal on novalue name ErrorHandler

/* Intentem accedir a una variable no definida */
say "El valor de la variable no definida és:" undefinedVar

/* Aquesta línia no s'executarà si es produeix un error */
say "Aquesta línia no s'executarà si hi ha un error."

ErrorHandler:
say "S'ha produït un error!"
exit

Explicació:

  • signal on syntax name ErrorHandler: Captura errors de sintaxi i redirigeix l'execució a la rutina ErrorHandler.
  • signal on novalue name ErrorHandler: Captura errors de variables no definides i redirigeix l'execució a la rutina ErrorHandler.

Exemple 2: Utilitzant CALL ON ERROR

/* Exemple de gestió d'errors amb CALL ON ERROR */
call on error name ErrorHandler

/* Intentem dividir per zero */
result = 10 / 0
say "El resultat és:" result

/* Aquesta línia no s'executarà si es produeix un error */
say "Aquesta línia no s'executarà si hi ha un error."

ErrorHandler:
say "S'ha produït un error de divisió per zero!"
exit

Explicació:

  • call on error name ErrorHandler: Defineix una rutina d'error que s'executarà quan es produeixi un error d'execució.

Exercicis Pràctics

Exercici 1: Captura d'Errors de Fitxer

Escriu un programa que intenti obrir un fitxer inexistent i gestioni l'error de manera adequada.

/* Exercici: Captura d'Errors de Fitxer */
call on error name FileErrorHandler

/* Intentem obrir un fitxer inexistent */
file = "inexistent.txt"
call linein file

/* Aquesta línia no s'executarà si es produeix un error */
say "El fitxer s'ha obert correctament."

FileErrorHandler:
say "S'ha produït un error en intentar obrir el fitxer!"
exit

Solució

/* Solució: Captura d'Errors de Fitxer */
call on error name FileErrorHandler

/* Intentem obrir un fitxer inexistent */
file = "inexistent.txt"
call linein file

/* Aquesta línia no s'executarà si es produeix un error */
say "El fitxer s'ha obert correctament."

FileErrorHandler:
say "S'ha produït un error en intentar obrir el fitxer!"
exit

Errors Comuns i Consells

  1. No Capturar Tots els Errors:

    • És important capturar tots els tipus d'errors que poden ocórrer en el teu programa per evitar comportaments inesperats.
  2. No Proporcionar Informació d'Error Adequada:

    • Assegura't de proporcionar missatges d'error clars i útils per facilitar el depurament.
  3. No Finalitzar Correctament el Programa:

    • Després de gestionar un error, assegura't de finalitzar el programa o redirigir l'execució de manera adequada per evitar més errors.

Conclusió

La gestió d'errors en REXX és essencial per escriure programes robustos i fiables. Utilitzant les instruccions SIGNAL i CALL ON ERROR, podem capturar i gestionar errors de manera eficient, assegurant-nos que el nostre codi pugui manejar situacions inesperades sense fallar. Practica amb els exemples i exercicis proporcionats per consolidar els teus coneixements en aquest tema.

© Copyright 2024. Tots els drets reservats