La gestió d'errors és una part fonamental de qualsevol llenguatge de programació, i RPG no és una excepció. En aquest mòdul, aprendrem com detectar, gestionar i respondre als errors en els nostres programes RPG. Això ens permetrà crear aplicacions més robustes i fiables.
Objectius del Mòdul
- Entendre la importància de la gestió d'errors.
- Aprendre les tècniques bàsiques per gestionar errors en RPG.
- Implementar la gestió d'errors en programes RPG.
Contingut
Introducció a la Gestió d'Errors
La gestió d'errors és el procés de detectar i respondre a les condicions d'error en un programa. Això inclou:
- Detecció d'Errors: Identificar quan es produeix un error.
- Gestió d'Errors: Decidir com respondre a l'error.
- Recuperació d'Errors: Tornar el programa a un estat funcional després d'un error.
Tipus d'Errors
En RPG, els errors es poden classificar en diverses categories:
- Errors de Sintaxi: Errors que es produeixen quan el codi no segueix les regles del llenguatge.
- Errors d'Execució: Errors que es produeixen durant l'execució del programa, com ara divisió per zero o accés a un arxiu inexistent.
- Errors Lògics: Errors en la lògica del programa que produeixen resultats incorrectes.
Gestió d'Errors amb Codi de Retorn
Una tècnica comuna per gestionar errors en RPG és utilitzar codis de retorn. Els codis de retorn són valors que una funció o procediment retorna per indicar si s'ha produït un error.
Exemple de Codi de Retorn
Dcl-Proc ProcessFile; Dcl-Pi ProcessFile Int(10); FileName Char(50); End-Pi; Dcl-S FileStatus Int(10); // Intentar obrir l'arxiu FileStatus = OpenFile(FileName); If FileStatus <> 0; Return FileStatus; // Retornar el codi d'error EndIf; // Processar l'arxiu // ... Return 0; // Retornar 0 si no hi ha errors End-Proc;
En aquest exemple, la funció ProcessFile
retorna un codi de retorn per indicar si s'ha produït un error en obrir l'arxiu.
Gestió d'Errors amb Excepcions
Una altra tècnica per gestionar errors és utilitzar excepcions. Les excepcions permeten separar la lògica de l'aplicació de la gestió d'errors, fent el codi més net i llegible.
Exemple d'Excepció
Dcl-Proc ProcessFile; Dcl-Pi ProcessFile Int(10); FileName Char(50); End-Pi; Dcl-S FileStatus Int(10); Monitor; // Intentar obrir l'arxiu FileStatus = OpenFile(FileName); If FileStatus <> 0; // Generar una excepció si hi ha un error CallP(e) RaiseException('FileOpenError'); EndIf; // Processar l'arxiu // ... On-Error; // Gestió de l'error Return -1; EndMon; Return 0; // Retornar 0 si no hi ha errors End-Proc;
En aquest exemple, utilitzem la instrucció Monitor
per detectar errors i la instrucció On-Error
per gestionar-los.
Exemples Pràctics
Exemple 1: Gestió d'Errors en la Lectura d'Arxius
Dcl-Proc ReadFile; Dcl-Pi ReadFile Int(10); FileName Char(50); End-Pi; Dcl-S FileStatus Int(10); Monitor; // Intentar obrir l'arxiu FileStatus = OpenFile(FileName); If FileStatus <> 0; CallP(e) RaiseException('FileOpenError'); EndIf; // Llegir l'arxiu // ... On-Error; // Gestió de l'error Return -1; EndMon; Return 0; End-Proc;
Exemple 2: Gestió d'Errors en la Connexió a una Base de Dades
Dcl-Proc ConnectToDatabase; Dcl-Pi ConnectToDatabase Int(10); DbName Char(50); End-Pi; Dcl-S DbStatus Int(10); Monitor; // Intentar connectar a la base de dades DbStatus = OpenDatabase(DbName); If DbStatus <> 0; CallP(e) RaiseException('DbConnectionError'); EndIf; // Realitzar operacions a la base de dades // ... On-Error; // Gestió de l'error Return -1; EndMon; Return 0; End-Proc;
Exercicis Pràctics
Exercici 1: Gestió d'Errors en la Creació d'Arxius
Descripció: Escriu una funció que intenti crear un arxiu. Si es produeix un error, la funció ha de retornar un codi d'error.
Solució:
Dcl-Proc CreateFile; Dcl-Pi CreateFile Int(10); FileName Char(50); End-Pi; Dcl-S FileStatus Int(10); // Intentar crear l'arxiu FileStatus = CreateNewFile(FileName); If FileStatus <> 0; Return FileStatus; // Retornar el codi d'error EndIf; Return 0; // Retornar 0 si no hi ha errors End-Proc;
Exercici 2: Gestió d'Errors en la Lectura de Dades
Descripció: Escriu una funció que intenti llegir dades d'una base de dades. Si es produeix un error, la funció ha de generar una excepció i gestionar-la.
Solució:
Dcl-Proc ReadData; Dcl-Pi ReadData Int(10); DbName Char(50); End-Pi; Dcl-S DbStatus Int(10); Monitor; // Intentar connectar a la base de dades DbStatus = OpenDatabase(DbName); If DbStatus <> 0; CallP(e) RaiseException('DbConnectionError'); EndIf; // Llegir dades de la base de dades // ... On-Error; // Gestió de l'error Return -1; EndMon; Return 0; End-Proc;
Conclusió
En aquest mòdul, hem après la importància de la gestió d'errors i hem explorat diverses tècniques per gestionar errors en RPG, incloent l'ús de codis de retorn i excepcions. També hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. La gestió d'errors és essencial per crear aplicacions robustes i fiables, i és una habilitat clau per a qualsevol programador RPG.
Curs de Programació RPG
Mòdul 1: Introducció a la Programació RPG
- Què és RPG?
- Configuració del Teu Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Programa Hello World
Mòdul 2: Conceptes Bàsics
Mòdul 3: Treballant amb Dades
Mòdul 4: Tècniques Avançades de Programació
Mòdul 5: RPG IV i Més Enllà
Mòdul 6: Integrant RPG amb Tecnologies Modernes
Mòdul 7: Aplicacions del Món Real
- Construint una Aplicació Simple
- Estudi de Cas: Sistema de Gestió d'Inventari
- Estudi de Cas: Sistema de Nòmines
- Millors Pràctiques i Revisió de Codi