C++ throw and catch exceptions

Description

C++ throw and catch exceptions

#include <iostream>
using namespace std;
const int MAX = 3;              //stack holds 3 ints
class Stack//from ww w .j ava  2 s .  c  o  m
{
   private:
   int st[MAX];              //stack: array of integers
   int top;                  //index of top of stack
   public:
   class Range               //exception class for Stack
   {                      //note: empty class body
};
Stack()                   //constructor
{ top = -1; }
void push(int var)
{
   if(top >= MAX-1)       //if stack full,
      throw Range();      //throw exception
   st[++top] = var;       //put number on stack
}
int pop()
{
   if(top < 0)            //if stack empty,
      throw Range();      //throw exception
   return st[top--];      //take number off stack
}
};
int main()
{
    Stack s1;
    try
    {
       s1.push(11);
       s1.push(22);
       s1.push(33);
       //    s1.push(44);                        //oops: stack full
       cout << "1: " << s1.pop() << endl;
       cout << "2: " << s1.pop() << endl;
       cout << "3: " << s1.pop() << endl;
       cout << "4: " << s1.pop() << endl;  //oops: stack empty
    }
    catch(Stack::Range)                    //exception handler
    {
       cout << "Exception: Stack Full or Empty" << endl;
    }
    cout << "Arrive here after catch (or normal exit)" << endl;
    return 0;
}



PreviousNext

Related