Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exception erneut auslösen (https://www.delphipraxis.net/42329-exception-erneut-ausloesen.html)

Gambit 17. Mär 2005 10:54


Exception erneut auslösen
 
Hallo,
in der Execute-Methode eines Threads versuche ich eine FTP-Connection auszuführen. Wenn nicht connected werden konnte soll ein Errorlevel gesetzt werden.
Jetzt möchte ich aber dort, wo ich den Thread ausführe auch die Exceptions, die beim Versuch zu connecten ausgelöst wurden wieder behandeln. Deshalb dachte ich mir, löse ich die Exception in der Execute Methode mit
Delphi-Quellcode:
raise
neu aus:

Delphi-Quellcode:
procedure TFTPConnectThread.Execute;
begin
  Try
    fFTPCon.Connect;
    fErrCode:= 0;
    terminate;
  except
    fErrCode:= 1;
    terminate;
    raise;
  end;
  if Terminated then exit;
end;
Tuts aber nicht. Geh´t das nicht so?

Gruß

Gambit

Binärbaum 17. Mär 2005 11:00

Re: Exception erneut auslösen
 
Ich hab zwar lange nicht mehr mit raise gearbeitet, aber es müsste so gehen. IMHO konnte man auch hinter raise noch angeben, welche Exception gemeint sein soll. Das war aber nur nötig, wenn eine andere als die letzte Exception ausgelöst werden soll.

MfG
Binärbaum

Gambit 17. Mär 2005 11:07

Re: Exception erneut auslösen
 
Tja, könnte es sein, dass die Exception zwar neu ausgelöst wird, ich aber an der falschen Stelle versuche sie wieder zu bearbeiten?
Ich starte den Thread ja so:

Delphi-Quellcode:
Try
   MyFTPCon:= TFTPConnectThread.Create(false,IdFTP);
except
   on E: EIdSocketError do
   ...
end;
und dachte, da könnte ich die Exception aus der Execute-Methode wieder weiter verarbeiten. Offensichtlich gehts aber so wohl nicht...

neolithos 17. Mär 2005 11:14

Re: Exception erneut auslösen
 
In dem Thread ausglöste Exceptions sind nur innerhalb dieses Thread abfangbar. Entweder du arbeitest mit dem Result und legst einen Parameter fest.

Verwendest du Indy?

Gambit 17. Mär 2005 11:23

Re: Exception erneut auslösen
 
Ja Indy. Nagut dann muss ich die Exceptions wohl alle in der Execute-Methode abfangen...

neolithos 17. Mär 2005 11:27

Re: Exception erneut auslösen
 
Indy hat doch das AntiFreeze und Connect kann als Parameter einen Timeout erhalten. Eventuell läßt sich so ein Thread sparen.

Gambit 17. Mär 2005 11:42

Re: Exception erneut auslösen
 
Ich öffne vor dem FTP-Transfer eine Form auf der ich Informationen über den Status der FTP-Verbindung ausgebe. Auf der Form liegt auch ein animiertes GIF welches aktiv ist solange die Verbindung noch nicht steht. Und die löppt auch trotz Antifreeze nicht, wenn ich die Verbindung nicht im Thread aufbaue.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz