C++ Exception Handling

#include <iostream>
#include <stdexcept>

using namespace std;
using std::runtime_error;

int noException( int number, int divisor );
int withException( int number, int divisor );
int passesException( int number, int divisor ) throw( runtime_error );

int main()
{
      int number = 15;
      int divisor = 0;

      cout << "Without exception: " << noException( number, divisor ) << endl;
      cout << endl;

      cout <<"With exception: " << withException( number, divisor ) << endl;
      cout << endl;

      try
    {
        cout << "With passed exception: " << passesException( number, divisor ) << endl;
      }
      catch( runtime_error &myError ) // Note: More general class of exceptions trapped
    {
        cout << "passesException() passed a " << myError.what() << " exception" << endl;
      }

      return 0;
}

// No exception handling - need if-else to avoid exception
// Exception code intermingled with regular code
int noException( int number, int divisor )
{
      int result;

      if( divisor != 0 )
              result = number / divisor;
      else
              result = 0;

      return result;
}

int divide( int number, int divisor )
{
  if( 0 == divisor )
      throw runtime_error( "Divide by zero error" );

  return number / divisor;
}

// Handles exception
int withException( int number, int divisor )
{
      int result;

      try
    {
        result = divide( number, divisor );
      } catch( runtime_error &myError )
    {
        cout <<"Exception " << myError.what() << " occurred in withException()";
        result = 0;
      }

      return result;
}

// Passes on exception
int passesException( int number, int divisor ) throw( runtime_error )
{
  int result = divide( number, divisor );
  return result;
}