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
-
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.
-
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 rutinaErrorHandler
.signal on novalue name ErrorHandler
: Captura errors de variables no definides i redirigeix l'execució a la rutinaErrorHandler
.
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
-
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.
-
No Proporcionar Informació d'Error Adequada:
- Assegura't de proporcionar missatges d'error clars i útils per facilitar el depurament.
-
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.
Curs de Programació REXX
Mòdul 1: Introducció a REXX
- Què és REXX?
- Configuració de l'Entorn REXX
- Hola Món en REXX
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Conceptes Bàsics de Programació
- Operadors i Expressions
- Estructures de Control: IF/THEN/ELSE
- Bucles: DO i LEAVE
- Entrada i Sortida
- Manipulació Bàsica de Cadenes
Mòdul 3: Programació Intermèdia en REXX
- Funcions i Subrutines
- Funcions Incorporades
- Gestió d'Errors
- Operacions d'Entrada/Sortida de Fitxers
- Treballant amb Arrays
Mòdul 4: Programació Avançada en REXX
- Manipulació Avançada de Cadenes
- Tècniques de Parsing
- Interfície amb Programes Externs
- Macros REXX
- Optimització del Rendiment