Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Sämtliche Fehlermeldungen abfangen

  Alt 29. Jul 2005, 00:39
Zitat von Nicolai1605:
Ist es eigentlich sinnvoll, - mehr oder weniger - alle Functionen/Proceduren in Try-Except einzuschachteln?
Aus meinen Exception Tutorial:
Zitat:
Dass die strukturierte Ausnahmebehandlung funktioniert ist weniger eine Aufgabe des Betriebssystems,
sondern eigentlich des Compilers. Der Compiler muss am Anfang und am Ende von Ausnahmeblöcken
speziellen Code erzeugen. Außerdem muss der Compiler zum Ausführen Tabellen mit unterstützenden
Datenstrukturen anlegen und Callback Funktionen bereitstellen, die das Betriebssystem aufrufen kann, damit
es die Ausnahmeblöcke durchlaufen kann. Desweiteren ist der Compiler auch dafür zuständig den
Stackframe vorzubereiten und für sonstige zusätzliche Informationen.
Und:
Zitat:
Sinnvoller Einsatz von Exceptions
Generell teilt man den Programmfluss in drei Stufen ein: lowlevel Funktionen, highlevel Funktionen und GUI
Funktionen. Normalerweise rufen GUI Funktionen wie Events nur die komplexen highlevel Funktionen auf.
Lowlevel Funktionen sollten nun Exception frei sein. Die highlevel Funktionen sollten mit Exceptions arbeiten,
da deren Programmierung von aussagekräftigen Funktionsrückgabewerten viel zu kompliziert werden kann.
Exception erleichtern also in highlevel Funktionen deren Aufbau wesentlich.
Exceptions sollten niemals in Release-Funktionen benutzt werden. Der Grund ist ganz einfach: Solche
Funktionen werden meist gruppiert in übergeordneten Funktionen auftreten. Würde nun eine Exception
ausgelöst, würden die nachfolgenden Release-Funktionen ein Speicherleck verursachen. Würde man es
trotzdem machen, müsste der Programmierer nun jeden Aufruf solcher Release-Funktionen separat mit
einem try-finally schützen. Der Sinn und Zweck von Exception würde sinnlos werden.
Auf der anderen Seite ist es sinnvoll Exceptions in Allocator-Funktionen zu verwenden. Also in Funktionen in
denen Speicher angefordert wird. Tritt dort eine Exception auf, wird durch die Exception verhindert, dass
weiter sinnloser Speicher allokiert wird.

Try-except-Blöcke sollten immer mit Bedacht und sparsam eingesetzt werden. Ein vollständiges
"Abklemmen" aller Exceptions per try-except-Block ist fast immer schlecht aus Sicht der Wartung des
Programmes. Try-except-Blöcke sollten also gezielt nur auf einige Exception-Typen reagieren. Der Grund ist
offensichtlich. Das Ziel des Exception-Handlings sollte es sein für den Programmierer aussagekräftige
Ausnahmebedingungen für den Programmfluss zu visualisieren. Setzt man try-except-Blöcke unüberlegt ein,
so kann man dies Ziel nicht erreichen und der Vorteil von Exceptions geht verloren.
Generell gilt: Exceptions nur dann auslösen, wenn eine Bedingung eintrittunter der der Programmfluss
keinesfalls fortsetzbar ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat