Ablaufsysteme
Exceptions
Ausnahmen (engl. Exceptions)
Was ist das ?
Es ist ein Mechanismus zur strukturierten Behandlung von ungewöhlichen Sitiationen: (Beispiel C++)
try
{
   /* code */
   if(bedingung)
       throw Error(); 
}
catch(Error &ex)
{
   /* Behandlung */
}
Natürlich kann die Ausnahme in einer gerufenen Funktion/Methode vorkommen oder
an mehreren Stellen. Dann wird der Code mit diesem Mechanismus wirklich übersichtlicher ...
Das Ablaufsystem muß auch Destruktoren von Objekten auf dem Stack aufrufen.
Design-Fragen
Nach IBM-DOKU und Divan Lectures Exception gibt es zwei Modelle der Ausnahmenbehandlung:
 - Termination Model
 
 - Wenn eine Ausnahme geworfen wurde, kehrt die Kontrolle nicht wieder zum Auswerfspunkt (throw point) zurück (so in C++,Java, Modula3)
 
 - Resumption-Modell
 
 - Die Ausnahmenbehandlung behandelt das Problem und kehrt dann wieder zum Auswurfspunkt zurück (PL/1)
     Damit kann besser die Fehlerbehabung gemacht werden.
     Die Implementierung ist aber sehr komplex. 
 
Anwendung
 - Elhadad Kurs
 
 - beschreibt, wie man sicher für Ausnahmen programmiert.
 
Implementierung
 - lec37.pdf (Quelle)
 
 - skiziert 4 Implementierungen:
   
    - Extra Return Value / Transformation in lokale gotos
    
 - setjmp/longjmp
    
 - Table of Continuation
    
 - static Exception Tables
   
 
  - exceptions.txt (von hier)
 
 - beschreibt einfache auf setjmp/longjump beruhendes Macros für C
 
 -  Vishal Kochhar  : How a C++ compiler implements exception handling
 
- Wie G++ exceptions behandelt
 
  - Aus einer Antwort auf den letztgenannten Artikel
 
 - Erkenntnisse aus der Analyse aus der g++-Implementierung
 
- Versuch minimale Exception-Behandlung fuer C++ auf L4
  
Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber