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;
}