// xstak.cpp // Демонстрация механизма исключений #include using namespace std; const int MAX = 3; //в стеке максимум 3 целых числа /////////////////////////////////////////////////////////// class Stack { private: int st[MAX]; //стек: целочисленный массив int top; //индекс вершины стека public: class Range //класс исключений для Stack { //внимание: тело класса пусто }; //--------------------------------------------------------- Stack() //конструктор { top = -1; } //--------------------------------------------------------- void push(int var) { if(top >= MAX-1) //если стек заполнен, throw Range(); //генерировать исключение st[++top] = var; //внести число в стек } //--------------------------------------------------------- int pop() { if(top < 0) //если стек пуст, throw Range(); //исключение return st[top--]; //взять число из стека } }; /////////////////////////////////////////////////////////// int main() { Stack s1; try { s1.push(11); s1.push(22); s1.push(33); // s1.push(44); //Опаньки! Стек заполнен cout << "1: " << s1.pop() << endl; cout << "2: " << s1.pop() << endl; cout << "3: " << s1.pop() << endl; cout << "4: " << s1.pop() << endl; //Опаньки! Стек пуст } catch(Stack::Range) //обработчик { cout << "Исключение: Стек переполнен или пуст"<