E2145 Re-déclenchement d'une exception autorisé seulement dans un gestionnaire d'exception (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Vous avez utilisé la syntaxe de l'instruction raise qui est utilisée pour re-provoquer une exception, mais le compilateur a déterminé que ceci s'est produit hors du bloc de gestion d'exception. Une limitation du mécanisme actuel de gestion d'exception désactive la ré-émission d'exceptions depuis des gestionnaires d'exceptions imbriqués.
program Produce; procedure RaiseException; begin raise; (*cas 1*) try raise; (*cas 2*) except try raise; (*cas 3*) except end; raise; end; end; begin end.
Cette erreur peut se produire pour plusieurs raisons. Premièrement, vous avez peut-être spécifié une instruction raise sans constructeur d'exception hors d'un gestionnaire d'exception. Deuxièmement, vous essayez peut-être de re-provoquer une exception dans le bloc d'essai d'un gestionnaire d'exception. Troisièmement, vous essayez peut-être de re-provoquer l'exception dans un gestionnaire d'exception imbriqué dans un autre gestionnaire d'exception.
program Solve; uses SysUtils; procedure RaiseException; begin raise Exception.Create('cas 1'); try raise Exception.Create('cas 2'); except try raise Exception.Create('cas 3'); except end; raise; end; end; begin end.
Une solution pour résoudre cette erreur est de provoquer explicitement un nouvelle exception, c'est probablement le cas dans des situations comme 'cas 1' et 'cas 2'. Pour la situation du 'cas 3', vous devrez examiner votre code pour déterminer une alternative adaptée qui produira les résultats souhaités.