zurück weiter

Ausnahmebehandlungen
Übungen

G.Eichelsdörfer
Staatliche Technikerschule Weilburg

Zehnte Übungen

Es erfordert einige Sorgfalt und ein gewisses "Sicherheitsdenken", um mögliche Ausnahmen im Ablauf eines Programms herauszufinden. Aus diesem Grund müsste eine Übung zu diesem Thema Sie in verschiedene Situationen versetzen (Rollenspiel) und Sie dazu auffordern, herauszufinden, was aus welchen Gründen alles schief gehen kann. Dies sollen Sie auch in späteren Arbeiten berücksichtigen. Die möglichen Ausnahmen werden in dieser Übung vorgegeben. Sie sollen an dieser Stelle das "Handwerk" zur Anwendung der Syntax üben.

10.1 Erweiterung der Klasse DoubleArray

Wenn nicht mehr genügend zusammenhängender Arbeitsspeicher frei ist, schlägt die Allokation von Speicher fehl. In aktuellen C++-Compilern wirft in diesem Fall der new-Operator eine Ausnahme vom Typ std::bad_alloc>, welche eine nicht gelungene Speicherallokation aufzeigt.

Arbeitsbereich: klassen, Projekt: doublearray

Nehmen Sie an der bereits erstellten Klasse folgende Änderungen vor und testen Sie diese durch eine geeignete Ausnahmebehandlung in der main-Funktion:

Die entsprechende Ausnahme soll vom neu zu definierenden Structtyp DoubleArrayException sein. Dieser soll die folgenden Komponenten besitzen:

Hinweis:
Der Destruktor braucht einen ggf. vorliegenden Fehler bei der Speicherallokation nicht zu berücksichtigen, weil der NULL-Zeiger hinter dem delete-Operator einfach nichts bewirkt.

10.2 Weitere mögliche Ausnahmesituationen in DoubleArray finden und werfen lassen

Stellen Sie möglichst viele relevante Ausnahmen zusammen!
Ermitteln Sie, in welchen Methoden oder Konstruktoren sich welche Ausnahmen ereignen!
Erweitern Sie diese Methoden/Konstruktoren um ein geeignetes Werfen einer Ausnahmeinformation!

10.3 CGI-Ausnahme: Dekodierfehler

Diese Übung können sie nur bearbeiten, wenn Sie am CGI-Kurs teilnehmen oder teilgenommen haben.

Im CGI-Projekt "decode" sind die beiden Funktionen hexDigitValue() und decode() zu erstellen. Geeignete Lösungsquelltexte liegen vor.

  1. Erweitern Sie beide Funktionen um das Werfen von geeigneten Ausnahmeinformationen!

  2. Erweitern sie die main-Funktion dieses Projektes um eine passende Ausnahmebehandlung!
    Betten Sie die Fehlerausgabe in korrekten HTML-Code ein!

    Empfehlung für das Testen der Ausnahmebehandlung:
    Legen Sie einen fehlerhaften CGI-String in einer Datei ab und lenken Sie zur Programmausführung das Einlesen auf diese Datei um.

    Beispiel:
    Fehlerhafter String: Tierart=K%E4nguruh&Name=Skippy&geboren=199%3
    Fehlerausgabe:
    ...
    <html>
    <head><title>Tierdaten</title></head>
    <body>
     <h1>Verarbeitung von Tierdaten</h1>
     <p>
      Fehler: Hexadezimalcodierung unvollständig<br>
      CGI-Daten:<br>
      Tierart=K%E4nguruh&Name=Skippy&geboren=199%3
     </p>
    </body>
    </html>