Entwickler-Ecke

Internet / Netzwerk - TIdSMTP - Connect - Exception kommt hoch


stiftmaster - Do 31.08.06 16:52
Titel: TIdSMTP - Connect - Exception kommt hoch
Hallo Leute,

habe hier ein riesen Problem, was einfach total komisch ist...

Ich soll mit einer Funktion eine E-Mail versenden - klappt auch soweit ganz gut. Es gibt nur Probleme, wenn z.B. der Benutzername falsch ist. Dann schmeißt die Indy-Komponente eine Exception - soweit so gut. Daher habe ich einen Try-Except-Block drum gebaut, damit ich es abfangen kann und dementsprechend eine Fehlermeldung ausbringen kann.

Mein Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
      try
        SMTPClient.Connect;
      except
        on E: Exception do
        begin
          Writeln(E.Message);
        end;
      end;


Wenn SMTPClient.Connect eine Fehlermeldung schmeißt, dann springt der aus dem Try-Block raus - aber net in den Except-Block rein... Ich verstehe bloß nicht wieso... Die Exception ist doch gerade dafür da, dass die Meldung nicht hoch kommt und ordentlich abgefangen wird *total verwirrt*

Danke für eure Hilfe

Stefan


Martok - Do 31.08.06 16:58

Springt er gar nicht rein oder wird nur die Exception vorher angezeigt?
Wenn das Programm in Delphi läuft schmeißt der Debugger alle Exceptions, auch die (eigentlich) abgefangenen.

//Martok


stiftmaster - Do 31.08.06 17:08

Hi,

die Exception wird ordnungsgemäß in Delphi geschmissen - so wie es sein soll. Nur nachdem die Exception geschmissen wurde, springt er nicht in den exception teil.

Das Programm ist ein CommandoZeilen-Tool. Wenn ich es über die Windows-Oberfläche starte, dann öffnet Windows so ein nettes Fenster mit "Programm XX hat ein Problem festgestellt und muss beendet werden." => und genau das will ich ja durch try-except verhindern :-)

Dankend

Stefan


stiftmaster - Do 31.08.06 17:24

boooooooooooohr, manchmal pack ich mir selber an den Kopf und denk, wie dumm man manchmal ist :)

Delphi hat schon alles richtig gemacht - nur wird nach Connect auch direkt Send(MEssage) aufgerufen - und das schmeißt dann nochmal n' Fehler, weil ja keine gültige Verbindung zu Grunde liegt.

Dankend

Stefan