Portée des gestionnaires d'exceptions

De RAD Studio
Aller à : navigation, rechercher

Remonter à Ecriture de gestionnaires d'exceptions


Il n'est pas nécessaire de spécifier dans chaque bloc des gestionnaires pour toutes les exceptions imaginables. Vous n'avez besoin que des gestionnaires des exceptions que vous voulez gérer d'une manière particulière dans un bloc donné.

Si un bloc ne gère pas une exception spécifique, l'exécution sort de ce bloc et revient au bloc le contenant (ou revient au code qui a appelé le bloc), et l'exception est toujours déclenchée. Ce processus se répète en augmentant la portée jusqu'à ce que l'exécution atteigne la portée de l'application ou un bloc qui, à un niveau quelconque, gère l'exception.

Par conséquent, vous pouvez imbriquer votre code de gestion d'exception. En d'autres termes, vous pouvez utiliser des blocs imbriqués afin de définir une gestion locale, pour des exceptions spécifiques, qui redéfinit la gestion du bloc environnant. Par exemple :

 try
 { instructions }
   try
 { instructions spéciales }
   except
     on ESomething do
     begin
 { ne gère que les instructions spéciales }
     end;
   end;
   { instructions supplémentaires }
 except
   on ESomething do
   begin
     {gestion des instructions et des instructions supplémentaires, mais pas des instructions spéciales}
   end;
 end;


Remarque :  Ce type d'imbrication n'est pas limité aux blocs de gestion d'exception. Vous pouvez également l'utiliser avec des blocs finally (comme décrit dans Ecriture de blocs finally) ou une combinaison de blocs de gestion d'exception et de blocs finally.

Voir aussi