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.

© Copyright 2024. Tots els drets reservats