User Tools

Site Tools


c:c_exception_handling

This is an old revision of the document!


C - C++ Exception Handling

Throwing Exception

#include <iostream>
#include <stdexcept>
using std::cin;
using std::cout;
using std::endl;
using std::runtime_error;
 
class DivideByZeroException : public runtime_error
{
public:
   DivideByZeroException::DivideByZeroException(): runtime_error( "attempted to divide by zero" ) {}
};
 
 
double quotient( int numerator, int denominator )
{
  throw DivideByZeroException(); // terminate function
 
  return 0;
}
 
 
int main()
{
  try
  {
    double result = quotient( 1, 1 );
    cout << "The quotient is: " << result << endl;
  }
  catch ( DivideByZeroException &divideByZeroException )
  {
    cout << "Exception occurred: " << divideByZeroException.what() << endl;
  }
 
  return 0;
}

Throw Types

#include <iostream>
using namespace std;
 
// only throw ints, chars, and doubles
void f(int val) throw(int, char, double)
{
  if(val==0) 
     throw val;
 
  if(val==1) 
     throw 'a';
 
  if(val==2) 
     throw 123.23;
}
 
 
int main()
{
  try{
    f(0); // also, try passing 1 and 2 to f()
  }
  catch(int i) {
    cout << "Caught an integer\n";
  }
  catch(char c) { 
    cout << "Caught char\n";
  }
  catch(double d) { 
    cout << "Caught double\n";
  }
 
  return 0;
}
c/c_exception_handling.1507804657.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki