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!"
exitExplicació:
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!"
exitExplicació:
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!"
exitSolució
/* 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!"
exitErrors 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
