AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception erneut auslösen

Ein Thema von Gambit · begonnen am 17. Mär 2005 · letzter Beitrag vom 17. Mär 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

Exception erneut auslösen

  Alt 17. Mär 2005, 10:54
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 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
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Exception erneut auslösen

  Alt 17. Mär 2005, 11:00
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#3

Re: Exception erneut auslösen

  Alt 17. Mär 2005, 11:07
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...
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Exception erneut auslösen

  Alt 17. Mär 2005, 11:14
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?
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#5

Re: Exception erneut auslösen

  Alt 17. Mär 2005, 11:23
Ja Indy. Nagut dann muss ich die Exceptions wohl alle in der Execute-Methode abfangen...
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Exception erneut auslösen

  Alt 17. Mär 2005, 11:27
Indy hat doch das AntiFreeze und Connect kann als Parameter einen Timeout erhalten. Eventuell läßt sich so ein Thread sparen.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#7

Re: Exception erneut auslösen

  Alt 17. Mär 2005, 11:42
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz