Title: Gestionnaire d'exception
1- Gestionnaire d'exception
- Procédures stockées PL/SQL
2Têtes de chapitres
- 1. Rappel théorique 4
- 2. Fonctionnement du gestionnaire 8
- 3. Utilisation du gestionnaire 21
- 4. Mémorisation des erreurs 24
- 5. Fonctionnement interne 27
- 6. Erreurs d'utilisation du gestionnaire 34
- 7. Distribution et installation 37
3Table des matières
- Rappel théorique 4
- Fonctionnement du gestionnaire 8
- Principe de base 9
- Procédure Err_Traite(p,m) 11
- Création d'une exception 14
- Illustration du fonctionnement 16
- Utilisation du gestionnaire 21
- Services du package ERREURS 22
- Bonne utilisation du package ERREURS 23
- Mémorisation 24
- Fonctionnement interne 27
- Constantes et variables 28
- Procédure Err_Traite 29
- Procédure Err_Envoie 31
- Erreurs d'utilisation 34
- Instruction NULL 35
- Absence de section d'exception 36
- Distribution et installation 37
4 5Rappel
PROCEDURE MaProcedure IS / Déclarations
/ BEGIN END
/ Bloc d'instruction /
Section d'exécution
EXCEPTION WHEN UneException THEN / Action
spécifique à UneException / WHEN OTHERS THEN /
Action globale à toutes les exceptions non
résolues /
Section d'exception
6Syntaxe
- exc_MonException Exception
- RAISE exc_MonException
- EXCEPTION
- WHEN exc_MonException THEN
- WHEN OTHERS THEN
-
7RAISE_APPLICATION_ERROR
CLIENT
-20145 Le compte n'est pas suffisamment alimenté
BEGIN RAISE_APPLICATION_ERROR (MonCode,
MonMessage) ... EXCEPTION WHEN ...
THEN ... END
Serveur
8- 2. Fonctionnement du gestionnaire ERREURS
9Principe de base
- Une exception est une erreur interne du SGBD ou
de l'application qui provoque impérativement - L'annulation de toutes les opérations en cours
- L'arrêt impératif de tout traitement
- La remontée du message d'erreur à l'utilisateur
- L'enregistrement des paramètres de l'environnement
10Résolution des exceptions
CLIENT
1
7
BEGIN Corps EXCEPTION WHEN OTHERS
THEN Err_Traite(p,m) END
A
2
6
BEGIN Corps EXCEPTION WHEN OTHERS
THEN Err_Traite(p,m) END
B
Serveur
3
5
BEGIN Corps EXCEPTION WHEN OTHERS
THEN Err_Traite(p,m) END
C
4
11Procédure Err_Traite (P, M)
Début
? Nouvelle occurrence d'erreur
Crée une nouvelle occurrence d'erreur
Oui
Non
Enregistre le nom de la procédure dans laquelle
l'exception est résolue
Mémorise le message associé à l'exception
Propage l'exception
Fin
12Règle d'appel de Err_Traite
13Exemple d'appel de Err_Traite
14Création d'une exception
BEGIN Début du Corps Suite du
corps EXCEPTION WHEN OTHERS THEN Err_Traite(p,m)
END
Err_Envoie(message)
15Exemple d'appel de Err_Envoie
16Illustration du fonctionnement
CLIENT
TestErreur1
TestErreur1A
TestErreur01
TestErreur001 / Erreur développeur diviseur lt 0
/ / Erreur interne diviseur 0/
17Exemple d'erreur interne avec le client SQLPLus
18Exemple d'erreur du développeur avec le client
SQLPLus
19Exemple d'erreur du développeur avec un client Web
20Exemple d'erreur interne avec un client Web
21- 3. Utilisation du gestionnaire ERREURS
22Services du package ERREURS
Err_Traite ( pe_Package IN VARCHAR2,
pe_Module IN VARCHAR2 ) Elle résout
toutes les exceptions du module. Elle enregistre
l'exception survenue et la renvoie à la procédure
appelante. pe_Package Package qui contient la
procédure à protéger pe_Module Nom de la
fonction ou procédure protégée Err_Envoie
( pe_Message IN VARCHAR2 ) Elle crée une
exception qui sera immédiatement résolue dans le
bloc EXCEPTION par la procédure
Err_Traite. pe_Message Message associé Ã
l'erreur
23Bonne utilisation du package ERREURS
PROCEDURE MaProcedure IS BEGIN Début du
Corps Suite du corps END
Seulement s' il est nécessaire pour le
développeur de déclencher une erreur
Err_Envoie(message)
EXCEPTION WHEN OTHERS THEN Err_Traite(p,m)
Toujours
24 25Vue de la journalisation
26Structure de mémorisation
27- 5. Fonctionnement interne
28Constantes et variables
- co_ErrTransmise
- co_ErrApplication
- vg_NumErreur
- vg_MessageInitial
- vg_NumOrdreErreur
29Procédure Err_Traite
1
2
3
4
30Chronologie d'appels de Err_Traite
P
2
1
BEGIN Corps EXCEPTION WHEN OTHERS
THEN Err_Traite('P', 'A') END
BEGIN Corps EXCEPTION WHEN OTHERS
THEN Err_Traite('P', 'B') END
B
CLIENT
4
3
vg_NumErreur x vg_NumordreErreur
1 vg_MessgeInitial SQLERRM
... RAISE_APPLICATION_ERROR (co_ErrRetransmise
, vg_MessageInitial)
Chronologie de dépilement et d'appel de la
procédure Err_Traite
vg_NumordreErreur 2 ... RAISE_APPLICATION_ERR
OR (co_ErrRetransmise, vg_MessageInitial)
31Procédure Err_Envoie
32Corps de la procédure Err_EnregNvle
33Corps de la procédure Err_EnregAppel
34- 6. Erreurs d'utilisation du gestionnaire
- ERREURS
35Instruction Null
36Absence de section d'exception
37- 7. Distribution et installation