Exception Handling/de: Difference between revisions
AutoSpider (talk | contribs) (Decode HTML entity names) |
AutoSpider (talk | contribs) (Simplify punctuation) |
||
(One intermediate revision by one other user not shown) | |||
Line 5: | Line 5: | ||
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== | ||
<font size="smaller">(Anders als bei dem [http://de.wikipedia.org/wiki/Schweinchen_in_der_Mitte Ballspiel] ''[de.wikipedia.org]'' fängt unser | <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 13: | Line 13: | ||
==Prinzip== | ==Prinzip== | ||
Wenn A B aufruft und B eine Funktion C aufruft, die formal und (hinsichtlich der | 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 24: | Line 24: | ||
* doppelte Verschachtelung auf dem Aufruf-Stack: a1->b1->a2->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 | * (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)