E2145 Wiederhervorrufen einer Exception ist nur im Exception-Handler möglich (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Sie haben die Syntax der raise-Anweisung benutzt, die für die Neuauslösung einer Exception verwendet wird, aber der Compiler hat festgestellt, dass diese Neuauslösung außerhalb eines Exception-Behandlungsblockes erfolgt ist. Eine Einschränkung des aktuellen Mechanismus zur Exception-Behandlung unterbindet die Neuauslösung von Exceptions aus verschachtelten Exception-Behandlungsroutinen heraus.
program Produce; procedure RaiseException; begin raise; (*Fall 1*) try raise; (*Fall 2*) except try raise; (*Fall 3*) except end; raise; end; end; begin end.
Es gibt verschiedene Gründe, aus denen dieser Fehler auftreten kann. Erstens: Möglicherweise haben Sie eine Auslösung ohne Exception-Konstruktor außerhalb eines Exception-Handlers festgelegt. Zweitens: Sie haben eventuell versucht, eine Exception im try-Block eines Exception-Handlers neu auszulösen. Drittens: Vielleicht haben Sie versucht, die Exception in einem Exception-Handler neu auszulösen, der in einem anderen Exception-Handler verschachtelt ist.
program Solve; uses SysUtils; procedure RaiseException; begin raise Exception.Create('Fall 1'); try raise Exception.Create('Fall 2'); except try raise Exception.Create('Fall 3'); except end; raise; end; end; begin end.
Eine Lösung dieses Fehlers liegt darin, explizit eine neue Exception auszulösen; dies ist wahrscheinlich in Situationen wie "Fall 1" und "Fall 2" die Intention gewesen. In der Situation von "Fall 3" sollten Sie Ihren Quelltext untersuchen, um eine geeigneten Umweg zu finden, mit dem die gewünschten Ergebnisse erzielt werden können.