0% ont trouvé ce document utile (0 vote)
44 vues15 pages

Cours PL SQL Exceptions

Transféré par

IMAD ElYAZIDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
44 vues15 pages

Cours PL SQL Exceptions

Transféré par

IMAD ElYAZIDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

5

Les exceptions
Généralités sur le
traitement des erreurs
Lorsqu’un programme est en exécution, certaines circonstances
exceptionnelles peuvent compromettre la poursuite normale de son
exécution. Le programme peut s'arrêter d’une façon prématurée et
inattendue si on ne traite pas correctement ces circonstances qui peuvent
être liées à plusieurs types d’erreurs, comme par exemple:
• Erreur matérielle (imprimante débranchée, serveur en panne, câbles
défectueux ….)
• Contrainte physique (disque plein, dépassement de la capacité de la
mémoire, …)
• Erreurs de programmation (cas non prévu par le programme, division
par zéro, ouverture d’un fichier qui n’existe pas, …)
• Utilisateur récalcitrant (type de données rentrées par l’utilisateur
incorrect)
Gérer les exceptions
La gestion des exceptions est un mécanisme qui permet d’avoir un moyen
souple et efficace pour la gestion des erreurs dans les programmes. Les
exceptions permettent d'écrire le flux principal du code et de traiter les cas
exceptionnels ailleurs. Cette approche possède plusieurs avantages :
• Dissocier la détection d'une erreur de son traitement.
• Séparer la gestion des erreurs du reste du code, donc contribuer à la
lisibilité des programmes.
• Séparation du code de gestion des erreurs du code de logique métier.
• Meilleure lisibilité des programmes.
Intercepter les exceptions
Le traitement ou l’interception des exceptions se fait dans la partie
EXCEPTION du bloc Pl/Sql à l’aide des mots clés WHEN et THEN:
Syntaxe:

EXCEPTION
WHEN <nom_exception> THEN <liste_instructions> ;

Pour pouvoir intercepter les autres types d’exceptions qui ne sont pas
prises en charge par la/les exceptions déclarées, on fait appel aux mots clés
WHEN OTHERS et THEN

Syntaxe:

EXCEPTION
WHEN OTHERS THEN <liste_instructions> ;
Types d’exception
Il existe trois types d’exceptions :
• Exceptions prédéfinies (Exceptions systèmes nommées): Sont des
erreurs qui se produisent lors de l'exécution du programme. Oracle
attribue un nom à chaque exception (NO_DATA_FOUND).
• Exceptions définies par l’utilisateur (Exceptions utilisateurs
nommées): Sont déclenchées à la suite d’erreurs dans le code applicatif et
nommées lors de leur déclaration par le développeur .
• Exception internes (Exceptions système anonymes): Sont des erreurs
qui proviennent de l'environnement Oracle Database et déclenchée
automatiquement par le système d’exécution. Elles n’ont pas de nom mais
un code d’erreur (ORA-27102 :mémoire insuffisante)
Exceptions prédéfinies
Nom d’exception Erreur Oracle Détails
NO_DATA_FOUND ORA-01403 déclenché si la
commande SELECT INTO
ne retourne aucune ligne
ou si on fait référence à
un enregistrement non
initialisé d’un tableau
PL/SQL
STORAGE_ERROR ORA-06500 problème de ressources
mémoire dû à PL/SQL
TOO_MANY_ROWS ORA-01422 la commande SELECT
INTO retourne plus d’une
ligne
ZERO_DIVIDE ORA-01476 tentative de division par
zéro
NOT_LOGGED_ON ORA-01012 tentative d’accès à la
base sans être connecté
INVALID_CURSOR ORA-01001 opération incorrecte sur
un curseur, comme par
exemple la fermeture
d’un curseur qui n’a pas
été ouvert
Pour plus de détails: [Link]
Exemple
Exception Simple:

Exception en utilisant when others:


Exceptions définies par
l’utilisateur
Pl/Sql permet aux développeurs de définir ses propres exceptions en
suivant les étapes suivantes:
1. Nommer l’exception dans la partie DECALRE du bloc Pl/Sql
2. Déclencher explicitement l’exception dans l’endroit convenable à
l’aide de la commande RAISE
3. Définir le traitement à effectuer dans la partie EXCEPTION du bloc
(Interception de l’exception)
DECLARE
Nom_Exception EXCEPTION;
BEGIN
instructions ;
IF (condition_anomalie) THEN RAISE Nom_Exception;

EXCEPTION WHEN Nom_Exception THEN
(Instructions de traitement);
END; /
Exemple
Exception internes
Pour pouvoir intercepter les exceptions internes (erreur oracle non
prédéfinie) il faut:
1. Déclarer le nom de l’exception anonyme dans la partie DECLARE:
DECLARE Nom_exception EXCEPTION;
2. Associer l’exception déclarée au code standard de l’erreur oracle
dans la partie DECLARE à l’aide de la commande PRAGMA
EXCEPTION_INIT:
PRAGMA EXCEPTION_INIT (Nom_exception , Code_erreur_oracle)
3. Définir le traitement à effectuer dans la partie EXCEPTION du bloc
(Interception de l’exception)
DECLARE
Nom_Exception EXCEPTION;
PRAGMA EXCEPTION_INIT(Nom_Exception, code_erreur_oracle)
BEGIN

EXCEPTION WHEN Nom_Exception THEN
(Instructions de traitement);
END; /
SQLERRM & SQLCODE
On peut récupérer la valeur numérique associée à l’erreur via la
fonction SQLCODE
On peut aussi récupérer le message d’erreur associé au code d’erreur
via la fonction SQLERRM
Exemple
Quelques règles d’interception
d’exceptions
• Le mot clé EXCEPTION débute la section de la gestion des
exceptions
• Plusieurs exceptions sont permises (définies et pré-définies)
• Une seule exception est exécutée avant de sortir d’un bloc
• WHEN OTHERS est la dernière clause:
• Intercepte toutes les exceptions non gérées dans la même
section d’exception
• Utilisez le gestionnaire d’erreurs OTHERS et placez le en
dernier lieu après tous les autres gestionnaire d’erreurs, sinon il
interceptera toutes les exceptions mêmes celle qui sont
prédéfinies.
La portée des exceptions
6

Les programmes
stockés

Vous aimerez peut-être aussi