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.