Code:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Dialogs;
procedure second;
begin
case Round(Random) of
0: StrToInt('Zwei'); // EConvertError
1: TObject(nil).Destroy; // Allgemeine Schutzverletzung
end;
end;
procedure first;
begin
try
second;
except
ShowMessage('Es ist ein Fehler aufgetreten.');
end;
end;
begin
Randomize;
first;
end.
Zitat von
JPSelter:
Die Prozedur "second" stammt aus einer anderen
Unit an der ich nichts verändern möchte. Gleichzeitig besteht aber die Gefahr, dass genau dort eine
Exception geworfen wird. Die möchte ich aber abfangen, also dachte ich mir, dass die aufrufende Prozedur "first" dies tun könnte. Macht sie aber nicht. Das was ich dort in die except-Klausel schreibe, wird einfach ignoriert. Wie kann ich das lösen?
Das sollte auf jeden Fall funktionieren!!!
Die
Unit SysUtils sollte aber eingebunden werden, sonst kann es bei Fehlern statt Exceptions auch RuntimeErrors geben. Die dann das Programm direkt beenden.