![]() |
AW: Mögliche Exceptions eines Objektes herausfinden
Und was ist mit Exceptions, die nicht von System.SysUtils.Exception abgeleited sind?
Sowas ist leider (immer) noch möglich. |
AW: Mögliche Exceptions eines Objektes herausfinden
Theoretisch ist es möglich, aber praktisch basiert die komplette Fehlerbehandlung darauf, somit sollte man sowas nicht machen.
Fehlerdialoge usw. zeigen sowas nicht an und auch das
Delphi-Quellcode:
ignoriert sowas. (wirkt dann ähnlich wie ein Abort/EAbort, außer dass es am ersten EXCEPT mit einem ON-DO abbricht)
except on E: Exception do
Das "leider" war Absicht. (auch wenn es seit Einführung vor Jahrzehnten nie "richtig" benutzt wurde) Ja klar kann RegEx viel, aber hier fängst dann an das RegEx rekursiv zu benutzen ... das ist dann bissl zuviel des Guten. Dagegen ist der Weg über die RTTI ein Klacks. (nach dem Kompilieren) |
AW: Mögliche Exceptions eines Objektes herausfinden
Wie wäre es denn, wenn wir den Threadersteller erstmal mit den bisher gegebenen Vorschlägen arbeiten lassen?
Das könnte schonmal 'ne nicht unerhebliche Menge an Ergebnissen liefern. Und wenn dann noch was unklares überbleibt, kümmern wir uns um die (mehr oder weniger) exotischen Ausnahmen bei der Erstellung von Ausnahmen ;-) Oder einfach mal nicht drauf hinweisen, dass es noch Sonderfälle gibt, sondern einfach mal direkt 'nen umsetzbaren Vorschlag, wie man die genannten Sonderfälle sinnvoll und sicher identifizieren kann ;-) Zitat:
Zitat:
Erster Vorschlag: Mal alle Exceptions der Sorte
Delphi-Quellcode:
suchen.
EIrgendeinName = class(Exception);
Mit dem Ergebnis suchen, ob es irgendwo ein
Delphi-Quellcode:
gibt.
EIrgendeinAndererName = class(EIrgendeinName);
Mit dem Ergebnis suchen, ob es irgendwo ein
Delphi-Quellcode:
gibt.
EIrgendeinNochAndererName = class(EIrgendeinAndererName);
Upps: Rekursionsgefahr. Vielleicht doch erstmal nur mit dem Einfachen anfangen? |
AW: Mögliche Exceptions eines Objektes herausfinden
Zitat:
|
AW: Mögliche Exceptions eines Objektes herausfinden
Klar, es gibt Codes, wo Exceptions zur "normalen" Flusssteuerung benutzt werden und wo z.B. Daten-Objekte via Raise als Result nach außen durchgereicht werden,
aber sowas würde ich ignorieren, da man solch ein Verhalten "vergessen" kann. |
AW: Mögliche Exceptions eines Objektes herausfinden
Zitat:
Delphi-Quellcode:
Grep nach "raise Exception\(" und "raise e[a-z]*\(".
if SomeCondition then
raise Exception('some error message'); und
Delphi-Quellcode:
Grep nach " e[a-z]*\.Create\("
if SomeCondition then
Exception.Create('some error message'); (Davon gab es eine sogar in er Delphi 10.2 RTL.) Ich habe damals darüber geblogt: ![]() |
AW: Mögliche Exceptions eines Objektes herausfinden
PS: Vergesst auch nicht die ErrorCodes. :angle:
Delphi-Quellcode:
Error(reOutOfMemory);
Und für gewisse "Fehler" gibt es auch schon von Haus aus Funktionen.
Delphi-Quellcode:
Abort; // ihr dürft aber auch gern raise EAbort.Create('irgndwas, wird eh ignoriert'); machen
OutOfMemoryError; // und wenn der Speicher zu wenig ist, dann wurde dafür das Objekt schon vorher erstellt |
AW: Mögliche Exceptions eines Objektes herausfinden
Danke an alle für Eure Ideen!
Es sind nicht wirklich 17.000 Exceptions, aber ich sehe meine Frage dahingehend beantwortet, dass es keinen einfachen Weg gibt, sich die möglichen Exceptions in einer Art "Exception-Übersicht" anzeigen zu lassen. Es gibt ja auch kein "throws" o.ä. in Delphi. Naja, passt. Ich werde eben danach suchen. lg Caps |
AW: Mögliche Exceptions eines Objektes herausfinden
Zitat:
|
AW: Mögliche Exceptions eines Objektes herausfinden
Jo, sowas vergessen wir einfach. Wer sowas macht, hat es nicht anders verdient. :angle2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 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