![]() |
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:
neu aus:
raise
Delphi-Quellcode:
Tuts aber nicht. Geh´t das nicht so?
procedure TFTPConnectThread.Execute;
begin Try fFTPCon.Connect; fErrCode:= 0; terminate; except fErrCode:= 1; terminate; raise; end; if Terminated then exit; end; Gruß Gambit |
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 |
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:
und dachte, da könnte ich die Exception aus der Execute-Methode wieder weiter verarbeiten. Offensichtlich gehts aber so wohl nicht...
Try
MyFTPCon:= TFTPConnectThread.Create(false,IdFTP); except on E: EIdSocketError do ... end; |
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? |
Re: Exception erneut auslösen
Ja Indy. Nagut dann muss ich die Exceptions wohl alle in der Execute-Methode abfangen...
|
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.
|
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