
Lorsque Oracle rencontre une erreur dans l'exécution d'un programme (overflow, violation de
contraintes d'intégrité...), il sort immédiatement du bloc, en affichant le code et le message
d'erreur.
Si le développeur veut poursuivre l'exécution du programme, il doit rediriger et traiter ces cas
dans la partie EXCEPTION du bloc PL/SQL(sauf les exceptions internes déjà prénommées par
Oracle). Dans cette partie EXCEPTION, il pourra pour chaque cas d'erreur ou d'exception, à
condition de les préciser et de les avoir déclarés (pour les exceptions externes), exécuter un
traitement particulier.
Déclaration
On peut gérer 2 types d'erreurs ou d'exceptions : les exceptions internes (prédéfinies par
Oracle) et les exceptions externes (déclarées par le développeur).
DECLARE
déclarations
nom_exception_externe EXCEPTION;
BEGIN
instructions
IF condition THEN
RAISE nom_exception_externe;
END IF;
instructions
EXCEPTION
WHEN nom_exception_externe THEN instructions ;
WHEN nom_exception_interne THEN instructions ;
WHEN OTHERS THEN instructions
END;
Remarques :
- Les exceptions internes sont redirigées par Oracle sans que l'on doive utiliser la commande
RAISE.
- Le fait de traiter une exception fait sortir du bloc (BEGIN ... END) auquel appartient
l'exception. Le fait de traiter des exceptions dans le bloc le plus externe d'un programme
entraîne donc l'arrêt du programme. Il faudra intégrer une exception dans un bloc imbriqué si
l'on désire continuer le traitement après la gestion de cette exception.
- Dans la partie EXCEPTION, la condition WHEN OTHERS THEN permet de gérer les erreurs
internes qui n'ont pas de nom spécifique ou qu'on ne désire pas traiter en particulier.