Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Auslöser einer Exception? (https://www.delphipraxis.net/72428-ausloeser-einer-exception.html)

Angel4585 30. Jun 2006 07:31


Auslöser einer Exception?
 
Hallo,

ich versuche gerade herauszufinden wer der Auslöser einer Exception ist.

Da ich in meinem Programm in ca. 20 verschiedenen Prozeduren eine TIdHTTP Komponente verwende und diese jeweils Fehlercodes wie 400,404 und diverse Socketserrors auslösen kann, dachte ich mir das ich dazu am besten die "globale" Application.Onexception "missbrauche" und dort einfach sämtliche Derartige Fehler abfange und auswerte.

Diese Prozedur habe ich mir in etwa so zusammengedacht:

Delphi-Quellcode:
procedure TData.AppException(Sender:TObject; E: Exception);
begin
Screen.Cursor:=crDefault;
if Sender is TIdHTTP then
  with TIdHTTP(Sender) do
    begin
    if Response.ResponseCode <> 200 then
      begin
      ShowMessage('Fehler in der Verbindung!'+sLineBreak+
                  'Mögliche Ursachen:'+sLineBreak+
                  '1. Fehlerhafte Proxy-Einstellungen'+sLineBreak+
                  '2. Server down.');

      end;
    end
else ShowMessage(TComponent(sender).Name+e.Message);
Also das ist jetzt nur so grob zum testen.

Das Problem ist jetzt das Sender jedesmal das Formular ist von welchem die Prozedur aaufgerufen wird darstellt, als "Sender is TIdHTTP" niemals zutrifft.

Kann mir jetzt jemand sagen wo drinsteht wer den Fehler ausgelöst hat?

Danke schonmal

:angel:

Bernhard Geyer 30. Jun 2006 07:35

Re: Auslöser einer Exception?
 
Schau dir mal in der Jedi die JCLExcept*-Klassen und Demoanwendungen an.

Angel4585 30. Jun 2006 07:57

Re: Auslöser einer Exception?
 
Also in dieser Prozedur selbst kann ich nicht rausfinden welche Komponente die Exception ausgelöst hat?

Edit: Ich hab gerade gesehen das die Fehler vom Typ EIdException sind, mit der modifizierten Version kann ich die Fehler jetzt abfangen:


Delphi-Quellcode:
procedure TData.AppException(Sender:TObject; E: Exception);
begin
Screen.Cursor:=crDefault;
if E is EIdException then
  begin
  //Hier muss ich jetzt noch schauen was das für Fehler sind
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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