Click on exception.cpp to get source.
// File: exception.cpp
//       runs under g++ version 2.8.1 ("add gcc281")

#include <iostream>
#include <stdexcept>

using namespace std;

// class header info
class Integer
  {int x;
   public:
   Integer() : x(0) {}
   Integer(const int i) : x(i) {}
   inline Integer operator/(const Integer j)
      throw(std::invalid_argument); // indicate what the fun may throw
                         // this is not necessary but helps the caller
   friend ostream& operator<<(ostream& os, const Integer& i);
  };
// implementation
inline Integer Integer::operator/(const Integer j)
      throw(std::invalid_argument)
      {if(j.x == 0)
         throw(std::invalid_argument(
                 "in Integer::operator/: division by zero")
              );
       else return this->x/j.x;
      }
ostream& operator<<(ostream& os, const Integer& i)
  {os << i.x; return os; }
int main(void)
{int x=1, y=0;
 // cout << x/y << endl;
 try
 { Integer three = 3; Integer two = 2; Integer zero = 0;
   cout << three/two << endl;
   cout << three/zero << endl;
 }
 catch (std::invalid_argument& m)
     { cout << "Exception: " << m.what() << endl;
     }
}