Exception Handling/de: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Simplify punctuation)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
Fehlercodes oder Ausnahmebehandlung, was ist besser?
Fehlercodes oder Ausnahmebehandlung, was ist besser?


Das hängt ganz davon ab <span class="smiley">;)</span>
Das hängt ganz davon ab <span class="smiley">;)</span>


==“Schweinchen in der Mitte” – wie Funktionen sich dumm halten==
=="Schweinchen in der Mitte" – wie Funktionen sich dumm halten==


<font size="smaller">(Anders als bei dem [http://de.wikipedia.org/wiki/Schweinchen_in_der_Mitte Ballspiel] ''[de.wikipedia.org]'' fängt unser “Schweinchen” die Ausnahmen nie, aber Funktionen haben ja keine Gefühle – Gott sei Dank!)</font>
<font size="smaller">(Anders als bei dem [http://de.wikipedia.org/wiki/Schweinchen_in_der_Mitte Ballspiel] ''[de.wikipedia.org]'' fängt unser "Schweinchen" die Ausnahmen nie, aber Funktionen haben ja keine Gefühle – Gott sei Dank!)</font>


Eigentlich wollte ich hier durch ein konkretes Anwendungsbeispiel motivieren. Das Beispiel, das mich selbst auf den Trichter brachte, ist nicht quelloffen, weshalb ich es nicht zitieren kann. Ich hoffe ein anwendbares Beispiel nachreichen zu können und beschränke mich hier zunächst auf die Darstellung des Prinzips.
Eigentlich wollte ich hier durch ein konkretes Anwendungsbeispiel motivieren. Das Beispiel, das mich selbst auf den Trichter brachte, ist nicht quelloffen, weshalb ich es nicht zitieren kann. Ich hoffe ein anwendbares Beispiel nachreichen zu können und beschränke mich hier zunächst auf die Darstellung des Prinzips.
Line 11: Line 13:
==Prinzip==
==Prinzip==


Wenn A B aufruft und B eine Funktion C aufruft, die formal und (hinsichtlich der “gut”-Fälle) semantisch in B bekannt ist, deren tatsächliche Implementierung aber durch A ausgewählt wird, dann können wir B unter Einsatz von Ausnahmen frei vom Wissen über Fehler halten, die in der tatsächlichen Implementierung von C (nennen wir sie D) auftreten, aber nicht in die Semantik von C passen.
Wenn A B aufruft und B eine Funktion C aufruft, die formal und (hinsichtlich der "gut"-Fälle) semantisch in B bekannt ist, deren tatsächliche Implementierung aber durch A ausgewählt wird, dann können wir B unter Einsatz von Ausnahmen frei vom Wissen über Fehler halten, die in der tatsächlichen Implementierung von C (nennen wir sie D) auftreten, aber nicht in die Semantik von C passen.


<font size="smaller">Ich bin bemüht, das hier letztlich so einfach und verständlich wie möglich zu formulieren und damit längst nicht am Ziel. Klagen und Anregungen sind willkommen.</font>
<font size="smaller">Ich bin bemüht, das hier letztlich so einfach und verständlich wie möglich zu formulieren und damit längst nicht am Ziel. Klagen und Anregungen sind willkommen.</font>
Line 20: Line 22:
* wenn hier Quelltext, dann: verständlich, knapp, getestet
* wenn hier Quelltext, dann: verständlich, knapp, getestet
* Wissen des Aufrufers bleibt auf die Gut-Fälle beschränkt, nur die äußere Steuerung kennt (manche) Fehlerfälle.
* Wissen des Aufrufers bleibt auf die Gut-Fälle beschränkt, nur die äußere Steuerung kennt (manche) Fehlerfälle.
* doppelte Verschachtelung auf dem Aufruf-Stack: a1-&gt;b1-&gt;a2-&gt;b2
* doppelte Verschachtelung auf dem Aufruf-Stack: a1->b1->a2->b2
* Grundlage: indirekte Aufrufe mittels virtueller Methoden (ja, das geht auch mit Funktionszeigern)
* Grundlage: indirekte Aufrufe mittels virtueller Methoden (ja, das geht auch mit Funktionszeigern)
* (Bemerkung: Der überraschende Qualitätsübergang erinnert stark an den “Knall-Effekt” der bei [http://de.wikipedia.org/wiki/Minimax-Algorithmus Minimax] ''[de.wikipedia.org]'' durch den Einsatz von [http://de.wikipedia.org/wiki/Alpha-Beta-Suche Alpha- /Beta-Abschneidungen] ''[de.wikipedia.org]'' eintritt: [http://qt.io/groups/qt_german/wiki/AlphaBetaCut AlphaBetaCut])
* (Bemerkung: Der überraschende Qualitätsübergang erinnert stark an den "Knall-Effekt" der bei [http://de.wikipedia.org/wiki/Minimax-Algorithmus Minimax] ''[de.wikipedia.org]'' durch den Einsatz von [http://de.wikipedia.org/wiki/Alpha-Beta-Suche Alpha- /Beta-Abschneidungen] ''[de.wikipedia.org]'' eintritt: [http://qt.io/groups/qt_german/wiki/AlphaBetaCut AlphaBetaCut])

Latest revision as of 13:21, 23 August 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Fehlercodes oder Ausnahmebehandlung, was ist besser?

Das hängt ganz davon ab ;)

"Schweinchen in der Mitte" – wie Funktionen sich dumm halten

(Anders als bei dem Ballspiel [de.wikipedia.org] fängt unser "Schweinchen" die Ausnahmen nie, aber Funktionen haben ja keine Gefühle – Gott sei Dank!)

Eigentlich wollte ich hier durch ein konkretes Anwendungsbeispiel motivieren. Das Beispiel, das mich selbst auf den Trichter brachte, ist nicht quelloffen, weshalb ich es nicht zitieren kann. Ich hoffe ein anwendbares Beispiel nachreichen zu können und beschränke mich hier zunächst auf die Darstellung des Prinzips.

Prinzip

Wenn A B aufruft und B eine Funktion C aufruft, die formal und (hinsichtlich der "gut"-Fälle) semantisch in B bekannt ist, deren tatsächliche Implementierung aber durch A ausgewählt wird, dann können wir B unter Einsatz von Ausnahmen frei vom Wissen über Fehler halten, die in der tatsächlichen Implementierung von C (nennen wir sie D) auftreten, aber nicht in die Semantik von C passen.

Ich bin bemüht, das hier letztlich so einfach und verständlich wie möglich zu formulieren und damit längst nicht am Ziel. Klagen und Anregungen sind willkommen.

Notizen und Material

  • Anwendbarkeit z.B. zur Trennung medien- und inhaltsspezifischen Funktionen bei Eingaben
  • wenn hier Quelltext, dann: verständlich, knapp, getestet
  • Wissen des Aufrufers bleibt auf die Gut-Fälle beschränkt, nur die äußere Steuerung kennt (manche) Fehlerfälle.
  • doppelte Verschachtelung auf dem Aufruf-Stack: a1->b1->a2->b2
  • Grundlage: indirekte Aufrufe mittels virtueller Methoden (ja, das geht auch mit Funktionszeigern)
  • (Bemerkung: Der überraschende Qualitätsübergang erinnert stark an den "Knall-Effekt" der bei Minimax [de.wikipedia.org] durch den Einsatz von Alpha- /Beta-Abschneidungen [de.wikipedia.org] eintritt: AlphaBetaCut)