Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHttp.Get kann Exception nicht abfangen! (https://www.delphipraxis.net/63649-idhttp-get-kann-exception-nicht-abfangen.html)

PASST 21. Feb 2006 10:13


idHttp.Get kann Exception nicht abfangen!
 
Hi NG.

Delphi 4 (update 3), Indy 9.

Delphi-Quellcode:
try
  idHTTP.Get(sUrl, ms);
except
  Application.Terminate;
end;
Leider funktioniert dieser Code nicht, dh. bei nicht erreichbarer URL (404) wird das Programm nicht beendet.

Ist die URL erreichbar funktioniert alles tadelos.

Kann mir jemand einen Tipp geben?

Gruß
Peter

SirThornberry 21. Feb 2006 10:27

Re: idHttp.Get kann Exception nicht abfangen!
 
wenn du es so hart killen willst könntest du auch "TerminateProcess" verwenden. Das ist so ziemlich die gemeinste Art und weise dem Prozess gegenüber diesen zu killen (Prozess ist machtlos).

PASST 21. Feb 2006 10:30

Re: idHttp.Get kann Exception nicht abfangen!
 
Hm, es muss doch eine Möglichkeit geben bei einer 404-Exception das Programm normal zu beenden und nicht eine Fehlermeldung seitens Indy zu erhalten.

SirThornberry 21. Feb 2006 10:35

Re: idHttp.Get kann Exception nicht abfangen!
 
theoretich sollte das auch funktionieen. Jedoch weiß ich nicht welche Rahmenbedingungen außerhalb des geposteten Sources existieren die das beeinflussen. Und wenn es dir wirklich nur ums beenden des programmes geht kannst du ja auch die "HauDrauf"-Methode mit TerminateProcess verwenden.

PASST 22. Feb 2006 08:59

Re: idHttp.Get kann Exception nicht abfangen!
 
Ich denke nicht, dass TerminateProcess die optimale Lösung ist.

Ich möchte eigentlich, dass die Anzeige der Exception komplett unterdrückt wird und nicht angezeigt und dann durch eine TerminateProcess gekillt wird.

Noch einen Rat parat?

SirThornberry 22. Feb 2006 09:18

Re: idHttp.Get kann Exception nicht abfangen!
 
mit Try-Except, Try-Finally kannst du die Fehlermeldung auch unterdrücken. Vermutlich führst du dein Programm aber aus Delphi heraus aus und hast in den debugger-optionen "Stop on Delphi-Exceptions" aktiviert (was standardmäßig der fall ist). Delphi spuckt dir also eine Fehlermeldung aus, fährt dann aber in der Behandlung entsprechend Try-Except/Try-Finally fort.

PASST 22. Feb 2006 09:24

Re: idHttp.Get kann Exception nicht abfangen!
 
:lol: Das ist tatsächlich der Fall. Wenn ich das Programm außerhalb der IDE ausführe, wird keine Fehlermeldung ausgespuckt.

Andererseits führt das Application.Terminate aber auch nciht dazu, dass die Anwendung geshclossen wird, sondern es wird anschließend munter weiter im Quelltext fortgefahren.

Woran kann das nun liegen?
Ich dachte Application.Terminate wäre das ultimative Mittel, um die eigene Anwendung zu schließen.

Peter

SirThornberry 22. Feb 2006 09:28

Re: idHttp.Get kann Exception nicht abfangen!
 
das ultimative Mittel hab ich bereits gepostet. Application.Terminate beendet so weit ich weiß nur die Nachrichtenschleife des Hauptthreads. Ist also noch eine "nette" variante. Alternativ kannst du auch noch "halt" verwenden. Das ist nicht ganz so hart wie "TerminateProcess" aber ein ganzes stück effiezenter wenn man ein Programm beenden will.
Allerdings denke ich das es nicht die richtige Herangehensweise ist ein Programm bei einem Fehler einfach zu schließen. Und wenn du das doch unbedingt willst weiß ich nicht was gegen TerminateProcess spricht. Schließlich willst du das Programm ja auf jeden fall beenden was damit sichergestellt wäre.

Vielleicht solltest du mal erleutern was du genau vor hast. Einmal willst du deine Anwendung beenden und das andere mal eine Exception abfangen.
Wenn du das eigentliche Ziel mal beschreibst findet sich vielleicht ein besserer Weg dort hinn.

Bernhard Geyer 22. Feb 2006 09:33

Re: idHttp.Get kann Exception nicht abfangen!
 
Zitat:

Zitat von PASST
:lol: Das ist tatsächlich der Fall. Wenn ich das Programm außerhalb der IDE ausführe, wird keine Fehlermeldung ausgespuckt.

Menu Tools/Debugger-Optionen, Reiterseite "Sprach-Exceptions", CheckBox "Bei Delphi-Exception stoppen" beeinflußt das Verhalten in der IDE.

PASST 22. Feb 2006 09:37

Re: idHttp.Get kann Exception nicht abfangen!
 
Ok, dann erzähl ich mal ein bisken.

Mit HTTP.Get(sUrl, MemStream) möchte ich - bei Erreichbarkeit - eine CSV-Datei einlesen, die ich anschließend auswerte. Wenn ich keine Daten erhalten kann, möchte ich das Programm an dieser Stelle beenden, da sowieso nichts mehr passiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 Uhr.
Seite 1 von 2  1 2      

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