Sunday, May 18, 2008
What is Exception Handling?


  • Exceptions are run-time program anomalies.Exception handling provides a standard mechanism to handle such anomalies.

  • When a exception is raised the normal program execution is suspended until it is handled.

  • Raising of an exception is done by "throw" expression.

  • Handling of an exception is dobe by the "catch" clause.

  • "Try" block groups one or more program statements with one or more catch clauses.

  • Use catch ( ...) to handle all exceptions.


EXAMPLE CODE: Raise and handle an exception by accepting only positive numbers.

#include <iostream>

using namespace std;

// Exception class
class MyException {
    private:
        string iStr;

    public:
        MyException ( string aStr );
        void print ();
};

// User class
class MyObject {
    private:
        int iA;
        int iB;

    public:
        MyObject ( int aa, int bb );
};

MyException::MyException ( string aStr ) {
    iStr = aStr;
}

void MyException::print () {
    cout << iStr << endl;
}

MyObject::MyObject ( int aa, int bb ) {
    iA = aa;
    iB = bb;

    if ( iA <= 0  iB <= 0 ) {
        throw MyException ("Invalid args. Require positive nos.");
    }
}

void main()
{
    cout << "Enter two nos: " << endl;
  
    int arg1, arg2;
    cin >> arg1 >> arg2;

    try {
        MyObject obj(arg1, arg2);
    }
    catch ( MyException& e ) {
        e.print();
        return;
    }

    cout << "Ok" << endl;
}

INPUT1:
Enter two nos:
1 2

OUTPUT1:
OK

INPUT2:
Enter two nos:
10 0

OUTPUT2:
Invalid args. Require positive nos.

3 comments :

  1. This line

    if ( iA <= 0 iB <= 0 )

    should be

    if (( iA <= 0 )||( iB <= 0 ) )

    and the return in int main catch statement should be

    return 0;

    ReplyDelete
  2. In this program void main is used so it doesn't have to return anything, so return without any values is legal.

    ReplyDelete
  3. If the return type is int then, return value would have been 0 but in the above program return type is void and hence it need not return any value. Anyways, great piece of information; There are many concepts in exception handling which are helpful in writing an error free code. I found this website which gave me a great insight about exception handling. http://mortoray.com/2013/12/05/is-exception-safe-code-truly-possible/

    ReplyDelete

Contact Form

Name

Email *

Message *

Back to Top