Gestion des classes d'exceptions
Remonter à Ecriture de gestionnaires d'exceptions
Les exceptions sont toujours représentées par des classes. De ce fait, vous utilisez généralement une hiérarchie de classes d'exceptions. Par exemple, VLC définit l'exception ERangeError en tant que descendant de EIntError.
Lorsque vous fournissez un gestionnaire d'exception pour une classe d'exceptions de base, il intercepte non seulement les instances directes de cette classe, mais aussi les instances de tous ses descendants. Par exemple, le gestionnaire d'exception suivant gère toutes les exceptions d'erreur mathématique sur les entiers, notamment ERangeError, EDivByZero et EIntOverflow :
try
{ instructions effectuant des opérations de calcul entier }
except
on EIntError do { gestion spéciale des erreurs de calcul entier };
end;
Vous pouvez combiner les gestionnaires d'erreurs de la classe de base avec les gestionnaires spécifiques d'exceptions particulières (dérivées). Pour ce faire, placez les instructions catch dans l'ordre dans lequel vous voulez qu'elles soient recherchées quand une exception est déclenchée. Par exemple, le bloc suivant définit une gestion spécifique des erreurs d'étendue et un autre gestionnaire pour toutes les autres erreurs de calcul entier :
try
{ instructions effectuant des opérations de calcul entier }
except
on ERangeError do { gestion des calculs hors étendue };
on EIntError do { gestion des autres erreurs de calcul entier };
end;
Par contre, si le gestionnaire de EIntError est placé avant le gestionnaire de ERangeError, l'exécution n'atteint jamais le gestionnaire spécifique à ERangeError.