exception

PL/SQL, ne pas interrompre les traitements à la suite d'une exception

Vous avez codé un bloc PL/SQL qui génère une erreur (et oui, ça arrive, même aux meilleurs d'entre nous ;) ) et s'interrompt brutalement à la suite de ce problème... Vous souhaiteriez que l'exécution continue malgré les erreurs survenant en cours de traitement ? Il vous "suffit" d'encapsuler le code susceptible de lever une exception dans un sous-bloc PL/SQL !

Un bloc PL/SQL basique a la structure suivante:

DECLARE
  • variables

BEGIN

  • traitements

 

  • traitement susceptible de générer une erreur

 

  • autres traitements

EXCEPTION

WHEN <exception1> THEN <traitement_exception1>; WHEN <exception2> THEN <traitement_exception2>; WHEN OTHERS THEN <traitement_autres_exceptions>;

END; /

L'encapsulation des traitements problématiques se fait de la manière suivante:

DECLARE
  • variables

BEGIN

  • traitements

 

  • Sous-bloc PL/SQL encapsulant le traitement problématique
DECLARE
  • variables spécifiques
BEGIN
  • traitement susceptible de générer une erreur
EXCEPTION WHEN <exception1> THEN <traitement_exception1>; WHEN <exception2> THEN <traitement_exception2>; WHEN OTHERS THEN <traitement_autres_exceptions>; END;

 

  • autres traitements

END; /

Ainsi, l'erreur sera gérée mais ne stoppera pas la suite des traitements ! A noter que les variables déclarées dans un bloc sont accessibles dans tous les blocs enfants de ce bloc. Utile si l'on souhaite afficher l'état de certaines variables lors du traitement d'une exception...