Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Exception wird übersprungen?? (https://www.delphipraxis.net/205942-exception-wird-uebersprungen.html)

kagi3624 2. Nov 2020 09:28

Delphi-Version: 6

Exception wird übersprungen??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, wie auf dem Bild zu erkennen ist, verrusacht ein Aufruf eine Exception, welche ich abfangen möchte. In der Meldung ist die rede von EclSocketError, also habe ich sie eingebaut. Aber dort wird trotzdem nicht reigesprungen, wenn ich die Zeile On E : EclSocketError duch On E : Exception austausche, dann funktioniert das. K.A. was ich falsch mache, ich glaub ich lass da einfach Exception stehen, aber wenn jemand weiß was an dem Code falsch ist, würde ich das gerne wissen. Danke.

Delphi-Quellcode:
    try
      response := GetHttpResponse(request, TSEcheckClientURL, '20200928145100');
    except
      On E : EclSocketError do begin
        showmessage('Der Dienst konnte nicht erreicht werden!');
        application.Terminate;
      end;
    end;

dummzeuch 2. Nov 2020 10:28

AW: Exception wird übersprungen??
 
Ich würde mal mit "on e: Exception do" die Exception abfangen und e.Classname abfragen, ob es wirklich EclSocketError ist.

himitsu 2. Nov 2020 12:29

AW: Exception wird übersprungen??
 
Zitat:

ich glaub ich lass da einfach Exception stehen
Wenn du nicht nur auf genau diese Exception prüfen willst
oder auf Eigenschaften/Property davon drauf zugreifen tutst, dann gibt es eh keinen Grund was Anderes anzugeben.

Außerdem ist es eh eine schlechte Idee "alle" anderen Exceptions stillschweigend zu unterdrücken und bei der eigentlichen Exception die Fehlermeldung durch einen sinnlosen und womöglich komplett falschen Fehlertext zu ersetzen. (die originale Meldung spurlos zu verwerfen)
Delphi-Quellcode:
on E : Exception do begin
  ShowMessage('Der Dienst konnte nicht erreicht werden!'#10
    + E.ClasName + ': ' + E.Message);
end;
Selbst wenn hier EclSocketError angezeigt wird, könnte es immernoch sein, dass "EclSocketError" eine gleichnamige Klasse aus einer anderen Unit ist.
das ON arbeitet wie ein IS und da muß es der "selbe" Typ sein.

dummzeuch 2. Nov 2020 13:04

AW: Exception wird übersprungen??
 
Zitat:

Zitat von himitsu (Beitrag 1476550)
Außerdem ist es eh eine schlechte Idee "alle" anderen Exceptions stillschweigend zu unterdrücken

Das macht er doch gar nicht. Er fängt nur genau eine Klasse ab, die anderen werden automatisch re-raised.


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