Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TRestRequest: ERESTException Errorcode? (https://www.delphipraxis.net/217328-trestrequest-erestexception-errorcode.html)

taveuni 11. Jun 2025 07:57

TRestRequest: ERESTException Errorcode?
 
Hallo zusammen,

Delphi-Quellcode:
  Try
    RestRequest.Execute;
    if FRestRequest.Response.StatusCode <> 200 then
      DoSomething
    else
      DoSomethingElse
  except
    on E: Exception do
    begin
      var ErrorText:= e.message;
      var ErrorCode:= '???';
      // handle different exceptions here
    end;
Bei den Exceptions handelt es sich um eine ERESTException. Als Beispiel wenn ich die Exception.message logge sehe ich z.B:

REST-Anforderung fehlgeschlagen: Fehler beim Empfangen der Daten: (12152) Der Server lieferte eine ungültige oder unbekannte Rückmeldung
oder
REST-Anforderung fehlgeschlagen: Fehler beim Senden der Daten: (12002) Das Zeitlimit für den Vorgang wurde erreicht.

Wie komme ich an den Errorcode in der Klammer? Sowohl Copilot wie auch Gemini schlagen ein parsen des Textes vor :shock:

Gibt es eine andere Möglichkeit?

gubbe 11. Jun 2025 09:07

AW: TRestRequest: ERESTException Errorcode?
 
Wenn es eine ERESTException ist, solltest Du sie auch so abfragen. Also

Delphi-Quellcode:
on E: ERESTException do

Edit: bzw. als ERequestError, die dann auch einen Statuscode hätte.

taveuni 11. Jun 2025 09:09

AW: TRestRequest: ERESTException Errorcode?
 
Zitat:

Zitat von gubbe (Beitrag 1549357)
Wenn es eine ERESTException ist, solltest Du sie auch so abfragen. Also

Delphi-Quellcode:
on E: ERESTException do

Die beiden Meldungen oben sind beides ERestExceptions. Ich möchte den Code in der Klammer wenn möglich ohne Regex oder ähnliches.

gubbe 11. Jun 2025 09:29

AW: TRestRequest: ERESTException Errorcode?
 
Zitat:

Zitat von taveuni (Beitrag 1549358)
Die beiden Meldungen oben sind beides ERestExceptions. Ich möchte den Code in der Klammer wenn möglich ohne Regex oder ähnliches.

Ja, ich meinte nur, wenn Du allgemein e vom Typ Exception definierst, was ein ganz allgemeines Exception-Objekt ist, kannst Du davon keine genaueren Angaben erwarten.

Wenn es keine spezielleren Exceptions sind, wie ERequestError, die einen Statuscode liefern könnten, würde ich es mit der allgemeinen Funktion "GetLastError" probieren (nur unter Windows). Entspricht die Rückgabe dieser Funktion den Codes in der Fehlermeldung?

DeddyH 11. Jun 2025 09:33

AW: TRestRequest: ERESTException Errorcode?
 
Könnte man mal versuchen:
Delphi-Quellcode:
on E: ERESTException do
  if E is ERequestError then
    begin
      Status := ERequestError(E).StatusCode;
    end
  else
    begin
      // Pech gehabt, da muss man wohl parsen
    end;

taveuni 11. Jun 2025 09:48

AW: TRestRequest: ERESTException Errorcode?
 
Nein - GetLastError bringt nicht den Code.
Und nein - Es handelt sich nicht um einen ERequestError. Ich werds einfach parsen mit Regex.
Danke Euch beiden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz