Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Exceptions Utilisateur en PL/SQL
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Bases de donnéesDéveloppement

Exceptions Utilisateur en PL/SQL

L'Équipe Alphorm Par L'Équipe Alphorm 21 novembre 2024
Partager
Partager

La gestion des erreurs dans le code PL/SQL peut être complexe.

Des erreurs non contrôlées peuvent entraîner des dysfonctionnements graves et des interruptions de service.

Cet article présente l’utilisation des exceptions utilisateur en PL/SQL pour anticiper et gérer efficacement ces erreurs.

Table de matière
Rôle des Exceptions Utilisateur PL/SQLExemple de Gestion des Erreurs PL/SQLUtilisation de RAISE_APPLICATION_ERRORExemple avec RAISE_APPLICATION_ERRORPortée des Exceptions Système et PL/SQLExemple : Portée des Exceptions PersonnaliséesFAQConclusion

Formation Le langage PL/SQL : Le Guide Complet

Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !

Découvrir cette formation

L’objectif de cette section est de vous guider dans la création et l’utilisation des exceptions utilisateur pour gérer des erreurs spécifiques au sein d’un code PL/SQL. Contrairement aux exceptions système qui se déclenchent automatiquement pour des erreurs internes ou Oracle, les exceptions utilisateur offrent la possibilité de contrôler des erreurs liées à la logique applicative. En définissant vos propres exceptions, vous pouvez anticiper des scénarios particuliers et y répondre de manière personnalisée en générant des messages d’erreur clairs et adaptés.

Rôle des Exceptions Utilisateur PL/SQL

Les exceptions utilisateur permettent de contrôler des erreurs spécifiques à la logique applicative. Contrairement aux exceptions système, celles-ci sont définies par le développeur pour gérer des scénarios particuliers en déclenchant des messages d’erreur adaptés.

Flux d'exceptions utilisateur en PL/SQL.

La création et l’utilisation des exceptions utilisateur en PL/SQL suivent une structure simple, que nous détaillons ci-dessous :

				
					
 DECLARE
<nom_exception> EXCEPTION;
PRAGMA EXCEPTION_INIT(<nom_exception>, <code_erreur_oracle>);
BEGIN
...
RAISE <nom_exception>;
...
EXCEPTION
WHEN <nom_exception> THEN
<instructions_plsql>;
END;

				
			

Cette syntaxe permet de déclarer une exception utilisateur, de l’associer à un code d’erreur Oracle avec PRAGMA EXCEPTION_INIT, et d’utiliser RAISE pour déclencher l’exception manuellement.

Explication des éléments de la syntaxe

  • Déclaration :Dans la section DECLARE, l’exception est définie en lui donnant un nom explicite, ce qui facilite sa lecture et son interprétation.
  • Association avec PRAGMA EXCEPTION_INIT :Cette directive permet d’associer l’exception utilisateur à un code d’erreur Oracle. Ce n’est pas obligatoire, mais cela peut être utile pour standardiser certaines erreurs ou pour harmoniser les erreurs système et utilisateur dans votre application.
  • Déclenchement avec RAISE :La commande RAISE permet de déclencher l’exception manuellement dès que les conditions définies par le développeur sont remplies. Cela permet d’interrompre le traitement en cours et d’alerter immédiatement sur la situation anormale.
  • Gestion avec EXCEPTION :Dans le bloc EXCEPTION, vous spécifiez le traitement à appliquer en cas de déclenchement de l’exception utilisateur. Cela peut inclure l’affichage d’un message personnalisé, le log de l’erreur, ou d’autres actions correctives.
Erreur Courante : Une erreur fréquente est d’oublier de déclarer une exception utilisateur dans la section DECLARE, ce qui entraîne une erreur lors de l’utilisation de RAISE. Assurez-vous de bien déclarer toutes les exceptions personnalisées pour éviter ce problème.

Exemple de Gestion des Erreurs PL/SQL

Dans cet exemple, une exception utilisateur DATEENVOI_NONVALIDE est définie pour gérer le cas où une date d’envoi est antérieure à la date de commande.

				
					
 DECLARE
DATEENVOI_NONVALIDE EXCEPTION;
var_date_envoi commandes.date_envoi%TYPE := '27/07/2010';
var_date_com commandes.date_cde%TYPE;
var_numero_cde commandes.numero_cde%TYPE := 1001;
BEGIN
-- Récupère la date de commande pour une commande spécifique
SELECT date_cde INTO var_date_com FROM commandes
WHERE numero_cde = var_numero_cde;
-- Met à jour la date d'envoi pour la commande
UPDATE commandes SET date_envoi = var_date_envoi
WHERE numero_cde = var_numero_cde;
-- Vérifie si la date d'envoi est antérieure à la date de commande
IF var_date_envoi < var_date_com THEN
RAISE DATEENVOI_NONVALIDE; -- Déclenche l'exception
END IF;
EXCEPTION
WHEN DATEENVOI_NONVALIDE THEN
DBMS_OUTPUT.PUT_LINE('La date d''envoi ' || var_date_envoi || ' est antérieure à la date de la commande ' || var_date_com);
END;

				
			

Explication de l’exemple :

  • Déclaration de l’exception :DATEENVOI_NONVALIDE est déclarée comme une exception personnalisée.
  • Récupération des dates :La date de commande est récupérée pour vérifier la validité de la date d’envoi.
  • Condition et déclenchement de l’exception :Si var_date_envoi est antérieure à var_date_com, l’exception DATEENVOI_NONVALIDE est déclenchée par RAISE.
  • Gestion de l’Exception :Dans le bloc EXCEPTION, un message est affiché lorsque l’exception est déclenchée.

Utilisation de RAISE_APPLICATION_ERROR

RAISE_APPLICATION_ERROR permet de renvoyer une erreur personnalisée aux applications clientes, offrant ainsi une meilleure gestion des erreurs au niveau du serveur.

Exemple avec RAISE_APPLICATION_ERROR

Dans cet exemple, une vérification est faite pour s’assurer qu’une commande n’a pas de quantité négative. Si c’est le cas, un message d’erreur personnalisé est renvoyé à l’utilisateur via RAISE_APPLICATION_ERROR.

				
					
 DECLARE
var_numero_cde LIGNES_COMMANDES.NUMERO_CDE%TYPE := 1001;
var_quantite LIGNES_COMMANDES.QUANTITE_CDE%TYPE;
BEGIN
-- Récupération de la quantité pour la commande spécifiée
SELECT QUANTITE_CDE INTO var_quantite
FROM LIGNES_COMMANDES
WHERE numero_cde = var_numero_cde;
-- Vérification de la quantité : si elle est négative, on déclenche une erreur personnalisée
IF var_quantite < 0 THEN
RAISE_APPLICATION_ERROR(
-20001, -- Code d'erreur personnalisé (entre -20000 et -20999)
'Erreur : la quantité de la commande ' || var_numero_cde || ' est négative.'
);
END IF;
DBMS_OUTPUT.PUT_LINE('La quantité de la commande est correcte.');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Une erreur est survenue : ' || SQLERRM);
END;

				
			

Explication de l’exemple

Récupération de la quantité : On extrait la quantité associée au numéro de commande.

Condition de validation : Si la quantité est inférieure à 0, une erreur personnalisée est déclenchée en utilisant RAISE_APPLICATION_ERROR.

  • Le premier paramètre (-20001) est un code d’erreur utilisateur qui doit se situer entre -20000 et -20999.
  • Le deuxième paramètre est un message personnalisé qui informe l’utilisateur de l’erreur.

Gestion des erreurs : Si une erreur survient, elle est affichée dans la console.

La sortie sera

Message de vérification de commande en PL/SQL.

Portée des Exceptions Système et PL/SQL

Une exception déclenchée quitte le bloc actuel et recherche un bloc supérieur où l’exception est capturée et gérée.

Exemple : Portée des Exceptions Personnalisées

Dans cet exemple, nous avons un bloc PL/SQL avec un bloc interne. L’exception est d’abord déclenchée dans le bloc interne. Si elle n’est pas gérée dans ce bloc, elle remonte au bloc externe pour y être traitée.

				
					
 DECLARE
-- Déclaration d'une exception personnalisée
EXCEPTION_NON_VALIDE EXCEPTION;
BEGIN
DBMS_OUTPUT.PUT_LINE('Début du bloc externe.');
DECLARE
nombre_pos INT := -10; -- Nombre négatif pour déclencher une exception
BEGIN
DBMS_OUTPUT.PUT_LINE('Début du bloc interne.');
-- Vérification si le nombre est positif
IF nombre_pos < 0 THEN
RAISE EXCEPTION_NON_VALIDE; -- Déclenchement de l'exception
END IF;
DBMS_OUTPUT.PUT_LINE('Fin du bloc interne.');
EXCEPTION
-- Gestionnaire d'exception pour le bloc interne
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('Erreur dans le bloc interne : valeur incorrecte.');
-- L'exception EXCEPTION_NON_VALIDE n'est pas gérée ici, donc elle remonte au bloc externe
END;
-- Gestionnaire d'exception pour le bloc externe
EXCEPTION
WHEN EXCEPTION_NON_VALIDE THEN
DBMS_OUTPUT.PUT_LINE('Erreur dans le bloc externe : nombre négatif détecté.');
END;

				
			

Explication de l’exemple

Bloc Externe : Il inclut une exception personnalisée EXCEPTION_NON_VALIDE.

Bloc Interne : Ce bloc essaie de vérifier si nombre_pos est positif. Si nombre_pos est négatif, l’exception EXCEPTION_NON_VALIDE est déclenchée.

  • L’exception EXCEPTION_NON_VALIDE n’a pas de gestionnaire dans le bloc interne.

Remontée de l’Exception : Comme EXCEPTION_NON_VALIDE n’est pas gérée dans le bloc interne, elle remonte au bloc externe, où elle est interceptée et gérée.

La sortie serait :

Exemple d'erreurs dans les blocs PL/SQL

Cet exemple montre que si une exception n’est pas gérée dans un bloc interne, elle remonte dans la hiérarchie des blocs jusqu’à trouver un gestionnaire, illustrant la portée des exceptions en PL/SQL.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Qu'est-ce qu'une exception utilisateur en PL/SQL ?
Une exception utilisateur en PL/SQL est une erreur définie par le développeur pour gérer des scénarios spécifiques de la logique applicative. Contrairement aux exceptions système qui s’activent pour des erreurs internes, les exceptions utilisateur permettent un contrôle précis sur des situations particulières en générant des messages d’erreur adaptés. Elles sont cruciales pour anticiper des cas spécifiques et personnaliser la gestion des erreurs dans le code.
Comment déclarer une exception utilisateur en PL/SQL ?
Pour déclarer une exception utilisateur en PL/SQL, vous devez d’abord définir l’exception dans la section DECLARE du code, en lui attribuant un nom explicite. Ensuite, vous pouvez l’associer à un code d’erreur Oracle via PRAGMA EXCEPTION_INIT, bien que cela ne soit pas obligatoire. La commande RAISE permet de déclencher l’exception manuellement lorsque les conditions définies sont remplies.
Comment fonctionne RAISE_APPLICATION_ERROR en PL/SQL ?
RAISE_APPLICATION_ERROR en PL/SQL est utilisé pour renvoyer une erreur personnalisée aux applications clientes. Il permet de spécifier un code d’erreur utilisateur (entre -20000 et -20999) et un message d’erreur descriptif, offrant ainsi une meilleure gestion des erreurs au niveau du serveur. Cette fonctionnalité est utile pour informer les utilisateurs de l’application des problèmes spécifiques de manière contrôlée.
Quelle est la différence entre une exception utilisateur et une exception système en PL/SQL ?
Les exceptions utilisateur en PL/SQL sont définies par le développeur pour gérer des erreurs spécifiques à la logique de l’application, tandis que les exceptions système se déclenchent automatiquement pour des erreurs internes ou Oracle. Les exceptions utilisateur permettent un contrôle plus précis et personnalisé de la gestion des erreurs, contrairement aux exceptions système qui sont standard et gérées par le moteur Oracle.
Comment gérer la portée des exceptions en PL/SQL ?
En PL/SQL, la portée des exceptions est hiérarchique. Si une exception est déclenchée dans un bloc et n’est pas gérée, elle remonte au bloc supérieur jusqu’à ce qu’elle trouve un gestionnaire approprié. Cela signifie que les exceptions doivent être correctement interceptées dans les blocs internes ou externes pour éviter des comportements inattendus ou des interruptions dans le traitement du code.

Conclusion

En maîtrisant les exceptions utilisateur en PL/SQL, vous renforcez la robustesse de votre code. Quel autre aspect de la gestion des erreurs aimeriez-vous explorer pour optimiser encore plus vos applications ?

ÉTIQUETÉ : PL/SQL
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Exceptions Utilisateur en PL/SQL

© Alphorm - Tous droits réservés