![]() |
AW: Verständnisfrage zu Exit
Zitat:
Denn wenn der Kunde anruft und sich beschwert, dass die JPEG-Datei xyz.jpg nicht geladen werden kann, will ich wissen wie es dazu kam: War die Datei vorhanden? War der Header Okay? War das Endian Okay? Zumal diese Funktion eh Exceptions werfen könnte, z.B. weil der Dateipfad falsch ist, die Datei gesperrt ist, das Netzlaufwerk zum Pfad nicht gemountet ist. Und auch weil die Datei nicht vorhanden ist, weil DateiVorhanden eine RaceCondition darstellt. Wenn es Interessante Gründe gibt warum eine Methode Fehlschlägt sollte man diese nicht hinter einem Boolean Result verstecken. Davon sollte nur abgewichen werden, wenn jemand "beweist", dass das für die Anwendung ein Performance-Problem darstellt. Dann könnte ich mich evtl. mit der hässlichen alternative
Delphi-Quellcode:
anfreunden.
function LeseJPGEin(DatnameMV:string; var FehlerMeldung: string):Boolean;
Ciao HeZa |
AW: Verständnisfrage zu Exit
Zitat:
![]() Zitat:
|
AW: Verständnisfrage zu Exit
Zitat:
|
AW: Verständnisfrage zu Exit
Zitat:
Eleganter finde ich ein Functionsresult. Muss ja nicht unbedingt ein boolean sein, sondern kann auch eine Fehlernummer oder ein Enum sein. Exceptions verwende ich in der regel nur, wenn das Programm einen undefinierten Status bekommen könnte, oder wenn Eingabeparameter einen Wert haben, der eigentlich nicht vorkommen darf, dann hat die aufrufende Procedure schon einen Fehler gemacht. |
AW: Verständnisfrage zu Exit
Die Beispiele hier sind ja normal nicht der "Normalfall", also ist es kein Problem da mit einer Exception zu reagieren.
Exceptions haben auch den Vorteil, dass sie entweder "automatisch" angezeigt werden oder man sie außerhalb und sogar viel weiter oben via Try-Except abfangen/behandeln kann. Und ja, es gibt auch andere Wege, wo man zum Boolean-Result auch noch SetLastError verwendet, oder z.B. ein eigenes LastError(s)/LastErrorMessage(s)-Property, wenn ein Fehlercode alleine nicht genügend Infos bieten kann. |
AW: Verständnisfrage zu Exit
Zitat:
Zitat:
Zitat:
In der Realität - wie gesagt, gegenwärtiger Erkenntniszustand - handhabe ich das unter anderem so, dass bei solchen Konstrukten alle beteiligten Funktionen durch
Delphi-Quellcode:
abgesichert sind, also keine Exception weitergereicht werden kann.
Try
Zitat:
![]() Um auf Uwe zu antworten: In den aufgerufenen Routinen stecken Fehlercodes, im am Schluss möglichst zielgerichtet ausgewertet und erst dann dem Anwender präsentiert werden. Man nehme als Beispiel IrfanView: Das registriert beim Einlesen haufenweise Fehler, sagt aber nur dann was, wenn es wirklich notwendig ist. Weiß nicht, ob es der Weisheit letzter Schluss ist, aber ich sammle zurzeit die Fehler in einem Set und schaue am Schluss, was die beste Reaktion ist. |
AW: Verständnisfrage zu Exit
Zitat:
Komische Entwicklung hier im Forum (oder besser allgemein immer öfters in Foren/Social Media) :gruebel: :stupid: |
AW: Verständnisfrage zu Exit
Ja, bei Exceptions gibt es keine "Warnungen".
Bei Exceptions kann man unterschiedliche Exception-Klassen verwenden und dann im Try-Except auch sehr leicht unterschiedliche reagieren, aber per se ist sowas bei Exceptions nicht vorgesehn, mit einer Ausnahme, den Stillen Exceptions, abgeleitet von EAbort. Auch z.B. einige Indy-Fehler werden vom Debugger ignoriert (die sehen da in einer Ausnahmeliste, welche man selbst erweitern kann) Bei HRESTULT kann man unterschiedliche Level definieren, von Info, über Warning zu Error oder FatalError. Auch der Delphi-Compler kennt sowas, also Fehler die sofort abbrechen (Fatal) oder erst am Ende (Error), wo vorher noch weitere Folgefehler sich melden dürfen. |
AW: Verständnisfrage zu Exit
Zitat:
![]() Das ist nun aber wirklich OT ;-) |
AW: Verständnisfrage zu Exit
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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