pictogram Auteur: Patrick Biker
Date: 18 mars 2006
Maj : 21 Mars 2015

Exemples évolués

Chaque exemple montre une utilisation pratique de la fonction du WLangage.

Quand plusieurs syntaxes sont possibles, chacune est illustrée indépendamment.

Revenir à la page des exemples évolués


L'exemple suivant permet de personnaliser la gestion des erreurs à l'aide de deux procédures :

SurErreurBlocage () qui permet de personnaliser les erreurs de blocage

SurAutreErreur () qui permet de personnaliser tous les autres types d'erreur



//------ Procédure à appeler lors d' une erreur de blocage
PROCEDURE SurErreurBlocage ()

SI OuiNon ( "Une erreur de blocage a été rencontrée" + RC +...
          "Voulez-vous retenter l' opération ?" ) = Vrai ALORS
          // On réessaye l' opération qui a échoué
         RENVOYER opREESSAYER
FIN
// On rend la main à l' utilisateur
RENVOYER opFINTRAITEMENT

//------- Procédure à appeler pour les erreurs autres que les erreurs de blocage
PROCEDURE SurAutreErreur ()

SELON HErreur ( hErrEnCours )
    CAS 70015 // Erreur d'intégrité
    // Traitement spécifique aux erreurs d'intégrité
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // terminer le traitement en cours
    ...
    // On rend la main à l ' utilisateur
    RENVOYER opFINTRAITEMENT

    CAS 70100 / / Erreur de blocage
    // Traitement spécifique aux erreurs de blocage
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // terminer le traitement en cours
    ...
    // On rend la main à l' utilisateur
    RENVOYER opFINTRAITEMENT

    CAS 70010 // Erreur de doublon
    // Traitement spécifique aux erreurs de doublon
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // terminer le traitement en cours
    ...
    // On rend la main à l ' utilisateur
    RENVOYER opFINTRAITEMENT

    CAS 70700 // Erreur de conflit de modification
    // Traitement spécifique aux erreurs de conflit de modification
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // terminer le traitement en cours
    ...
    // On rend la main à l' utilisateur
    RENVOYER opFINTRAITEMENT

    CAS 70710 // Erreur de valeur obligatoire
    // Traitement spécifique aux erreurs de valeur obligatoire
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // terminer le traitement en cours
    ...
    // On rend la main à l' utilisateur
    RENVOYER opFINTRAITEMENT

    CAS 70720 // Erreur de réindexation en cours
    // Traitement spécifique aux erreurs de réindexation en cours
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // terminer le traitement en cours
    ...
    // On rend la main à l' utilisateur
    RENVOYER opFINTRAITEMENT

    CAS 70022 // Erreur de mot de passe
    // Traitement spécifique aux erreurs de mot de passe
    // par exemple, afficher l'erreur par Erreur(HErreurInfo())
    // ou refixer le mot de passe du fichier en cause 
    // par HPasse(HErreurInfo(hErrFichier), NouveauMotDePasse)
    // terminer le traitement en cours
    ...
   // On rend la main à l' utilisateur
    RENVOYER opFINTRAITEMENT
FIN

//------- Personnalisation des erreurs (dans le code d' initialisation du projet par exemple)

HSurErreur
( "*" , hErrBlocage , "SurErreurBlocage" )
HSurErreur ( "*" , hErrIntegrite + hErrDoublon +...
                 hErrModification + hErrMotDePasse , "SurAutreErreur" )

//------- Ajout d' un enregistrement
// pas besoin de tester le retour, car si une erreur est rencontrée,
// l' ajout sera retenté ou le traitement sera abandonné
HAjoute ( CLIENT )