1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Exceptions

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

  1. Curtis Bridges

    Curtis Bridges New Member

    Joined:
    Feb 6, 2007
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    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:
    #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:
    #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. DaWei

    DaWei New Member

    Joined:
    Dec 6, 2006
    Messages:
    835
    Likes Received:
    5
    Trophy Points:
    0
    Occupation:
    Semi-retired EE
    Location:
    Texan now in Central NY
    Home Page:
    Why would you post the same question 3 times? To dilute your response? Because you don't even know enough to know where it goes? Because you haven't read the "Before you make a query" thread or any other "How to Post....." thread in the whole wide world? I don't even want to read your question. I will respond: do your own homework.
     

Share This Page