1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

exceptions

Discussion in 'C++' started by Curtis Bridges, Feb 6, 2007.

Thread Status:
Not open for further replies.
  1. Curtis Bridges

    Curtis Bridges New Member

    Joined:
    Feb 6, 2007
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    Exceptions

    --------------------------------------------------------------------------------
    I am working on a class project as layed out by the instructor. This is in conjunction with Chapter 13 (Exceptions) from the book How To Program in C++ by Deitle 4/e. I am at a total loss on this subject. I thought that catching problems was up to the compiler. I have included Figure 13.1 for an example as per instructions and some code I have been working on. Could someone please look this over and help me get my brain around exceptions or at least this project?

    // Fig. 13.1: fig13_01.cpp
    // A simple exception-handling example that checks for
    // divide-by-zero exceptions.

    Code:
    Code:
    #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    #include <exception>
    
    using std::exception;
    
    // DivideByZeroException objects should be thrown by functions
    // upon detecting division-by-zero exceptions
    class DivideByZeroException : public exception {
    
    public:
    
       // constructor specifies default error message
       DivideByZeroException::DivideByZeroException()
          : exception( "attempted to divide by zero" ) {}
    
    };  // end class DivideByZeroException
    
    // perform division and throw DivideByZeroException object if 
    // divide-by-zero exception occurs
    double quotient( int numerator, int denominator )
    {
       // throw DivideByZeroException if trying to divide by zero
       if ( denominator == 0 )
          throw DivideByZeroException(); // terminate function
    
       // return division result
       return static_cast< double >( numerator ) / denominator;
    
    }  // end function quotient
    
    int main()
    {
       int number1;    // user-specified numerator
       int number2;    // user-specified denominator
       double result;  // result of division
    
       cout << "Enter two integers (end-of-file to end): ";
    
       // enable user to enter two integers to divide
       while ( cin >> number1 >> number2 ) {
       
          // try block contains code that might throw exception
          // and code that should not execute if an exception occurs
          try {
             result = quotient( number1, number2 );
             cout << "The quotient is: " << result << endl;
    
          } // end try
    
          // exception handler handles a divide-by-zero exception
          catch ( DivideByZeroException &divideByZeroException ) {
             cout << "Exception occurred: " << 
                divideByZeroException.what() << endl;
    
          } // end catch
    
          cout << "\nEnter two integers (end-of-file to end): ";
    
       }  // end while
    
       cout << endl;
    
       return 0;  // terminate normally
    
    }  // end main
    Here is the instructions and code I'm trying to use.


    /*Create a program that defines three user defined exception classes
    (called ExceptionOne, ExceptionTwo, and ExceptionThree
    - with the messages being the same as the name - see Figure 13.1 for an example).
    The program should have a loop with a menu with four selections
    - Option 1 will throw ExceptionOne, Option 2 ExceptionTwo, Option 3 ExceptionThree
    , and Option 4 to exit.
    The catch block should only catch the first two exceptions explicitly
    with the last exception caught generically.
    Make sure the switch logic is inside a try block followed by three catch blocks.
    ///////////////////////////////////////////////////////////////////////////////*/

    Code:
    Code:
    #include <iostream>
    
    #include <exception>
    
    #include <ctime>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    
    class BaseException 
    {
    
    public:
    
       // constructor specifies default error message
    	ExceptionOne::BaseException ()
    	 : ExceptionOne
    
     }// end class 
    class ExceptionOne: public BaseException {
    
    public:
    
    	ExceptionOne::ExceptionOne()
    		:ExceptionOne
    
    }// end class
    
    
    
    class ExceptionTwo: public ExceptionOne {
    
    public:
    
       // constructor specifies default error message
      ExceptionTwo::ExceptionTwo()
    	  : ExceptionTwo
    
    }  // end class 
    
    class ExceptionThree: public ExceptionTwo {
    
    public:
    
    	ExceptionThree::ExceptionThree()
    		:ExceptionThree
    
    }// end class
    
    
    
    int main()
    {
     
    Any help greatly appreciated. Thanks
     
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,285
    Likes Received:
    364
    Trophy Points:
    83
    Duplicate of [thread=2893]Exceptions[/thread]. Thread closed.
     
Thread Status:
Not open for further replies.

Share This Page