Opdracht 3: Exceptions.

© Harry Broeders.

De in het dictaat behandelde implementatie van een stack door middel van een array (zie paragraaf 4.1) breekt het programma af als een stackoverflow of stackunderflow optreedt. Het is veel handiger om een exception te gooien als een stackoverflow of stackunderflow optreedt. Zie dictaat OGOPRG hoofdstuk 6.8.

Opdracht 3.

De template class StackWithArray<T> (stackarray.h ) is afgeleid van de abstract template base class Stack<T> (stack.h ).

Pas de file stackarray.h zodanig aan dat de stack een exception veroorzaakt bij stackoverflow, stackunderflow en andere errors. Ontwerp een hiërarchie van exceptionclasses die het mogelijk maken om een specifieke of generieke stackfout af te vangen. Geef de exceptionclasses een memberfunctie print() die ervoor zorgt dat een passende foutmelding wordt afgedrukt. Zorg ervoor dat in het volgende (stacktest.cpp ) geval een juiste foutmelding verschijnt:

#include  <iostream>
using namespace std;

#include  "stackarray.h"

int main() {
    StackWithArray<int> s(10);
    try {
        s.push(2);
        while (true)
            s.pop();
    } catch (StackError& e) {
        // hier worden alle generieke StackError's opgevangen
        e.print();
    }
    try {
        while(true) {
            s.push(3);
        }
    } catch (StackPushError& e) {
        // hier wordt alleen de specifieke StackPushError opgevangen
        e.print();
    }
    cin.get();
    return 0;
}

verder met opdracht 4...