Hallo zusammen,
ich habe eine
Unit, die mehrere Funktionen für die Kommunikation mit einem am PC angeschlossen Gerät beinhaltet. Zusätzlich gibt es eine "Masterfunktion" in dieser
Unit, die alle Unterfunktionen nacheinander aufruft.
Tritt nun in einer dieser (Unter-)Funktionen ein Kommunikationsfehler auf, schmeisse ich eine eigene
Exception. Um das ganze mal zu verdeutlichen:
Delphi-Quellcode:
function SubFct1: integer;
begin
(...)
end;
function SubFct2: integer;
begin
(...)
end;
function MasterFct: integer;
begin
Result:= SubFct1;
Result:= SubFct2;
end;
procedure COMErrorHandling;
begin
raise COMException.Create(...);
end;
In der MainForm steht ferner:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnException:= AppException;
(...)
end;
procedure TMainForm.AppException(Sender: TObject; E:
Exception);
begin
if (E
is COMException)
then
begin
(...)
end
else
MessageDlg('
Es ist folgender Fehler aufgetreten:' +#10+#13+
E.
Message + #10+#13 +
'
Fehlertyp: '+ E.ClassName, mtError, [mbOk], 0);
end;
Das ganze funktioniert auch fast gut.
Problem: Es wird die MasterFct betreten und SubFct1 aufgerufen. Es tritt ein Kommunikationsfehler mit dem Gerät auf und es wird eine
Exception geworfen. Allerdings wird nach dem Quittieren der Fehlermeldung in der MasterFct nicht mehr weiter gegangen zu SubFct2.
Frage: Warum nicht?
Dank vorab und Gruß, Carsten