KEMBAR78
Exceptions in C++ Object Oriented Programming.pptx
Exception Handling
Exception Handling
• General mechanism for handling abnormal conditions
• Predefined exceptions: Constraint violations, I/O errors, other
illegalities
• User-defined exceptions
• Exception handlers specify remedial actions or proper
shutdown.
• Exception handling (EH) allows a programmer to provide code
in the program to handle run-time errors or exceptional
situations
– this improves reliability
EXCEPTIONS
Exceptions are run time anomalies or unusual
conditions that a program may encounter during
execution. Conditions such as
• Division by zero
• Access to an array outside of its bounds
• Running out of memory
• Running out of disk space
It was not a part of original C++. It is a new feature
added to ANSI C++.
EXCEPTION HANDLING
• Exceptions are of 2 kinds
– Synchronous Exception:
• Out of rage
• Over flow
• Asynchronous Exception:
– Error that are caused by causes beyond the control of
the program
• Keyboard interrupts
• In C++ only synchronous exception can be
handled.
Exception handling mechanism
• Find the problem (Hit the exception)
• Inform that an error has occurred (Throw the
exception)
• Receive the error information (Catch the
exception)
• Take corrective action (handle the exception)
• It is basically build upon three keywords
– Try
– Throw
– Catch
Example
#include <iostream>
using namespace std;
int main ()
{
try
{
throw 10;
}
catch (int e)
{
cout << “We have a problem!!” << endl;
}
return 0;
}
Output : We have a problem!!!
Contd.
• The keyword try is used to preface a block of
statements which may generate exceptions.
• When an exception is detected, it is thrown using
a throw statement in the try block.
• A catch block defined by the keyword catch
catches the exception and handles it
appropriately.
• The catch block that catches an exception must
immediately follow the try block that throws the
exception.
Contd.
• Exceptions are objects used to transmit
information about a problem.
• If the type of the object thrown matches the arg
type in the catch statement, the catch block is
executed.
• If they do not match, the program is aborted
• Often, Exceptions are thrown by functions that
are invoked from within the try blocks.
• The point at which the throw is executed is called
the throw point.
• Once an exception is thrown to the catch block,
control cannot return to the throw point.
THROWING MECHANISM
• The throw statement can have one of the following 3
forms
– throw(exception)
– throw exception
– throw //used to re-throw a exception
• The operand object exception can be of any type,
including constant.
• It is also possible to throw an object not intended for
error handling.
• Throw point can be in a deeply nested scope within a
try block or in a deeply nested function call.
• In any case, control is transferred to the catch
statement
THROWING MECHANISM
• The throw expression accepts one parameter as its argument
and this is passed to the exception handler.
• You can have a number of throw statements at different parts
of your try block with different values being thrown
try
{ // code
if ( x )
throw 10;
// code
if (y)
throw 20;
//code
}
CATCHING MECHANISM
• The type indicates the type of exception the catch block handles.
• The parameter arg is an optional parameter name
• The catch statement catches an exception whose type matches
with the type of the catch argument.
• If the parameter in the catch statement is named, then the
parameter can be used in the exception handling code.
• If a catch statement does not match the exception it is skipped.
• More than one catch statement can be associated with a try
block.
• The exception handler can be identified by the keyword catch.
• catch always takes only one parameter.
Contd.
• The first handler that yields a match is
executed.
• If several catch statement matches the type of
an exception the first handler that matches
the exception type is executed.
• This way we can chain multiple exception
handlers and only the one with the correct
parameter type gets executed.
Contd.
try
{
throw exception;
}
catch(type1 arg)
{
// catch block 1
}
catch(type2 arg)
{
// catch block 2
}
……
catch(typeN arg)
{
// catch block N
}
Catch all exceptions
try
{
try {
// code here
}
catch (int n) {
throw;
}
}
catch (...) {
cout << "Exception occurred";
}
RETHROWING AN EXCEPTION
• A handler may decide to rethrow the
exception caught without processing it.
• In such a case we have to invoke throw
without any arguments as shown below
throw;
• This causes the current exception to be
thrown to the next enclosing try/catch
sequence and is caught by a catch statement
listed after the enclosing try block
Example
void myFunction()
{
try
{
throw "hello"; // throw a char *
}
catch(const char *)
{ // catch a char *
cout << "Caught char * inside myFunctionn";
throw ; // rethrow char * out of function
} // myFunction }
}
int main()
{ cout << "Startn";
try
{
myFunction();
}
catch(const char *)
{
cout << "Caught char * inside mainn";
}
cout << "End";
return 0;
}
SPECIFYING EXCEPTION
• It is possible to restrict a function to throw certain specific
exceptions by adding a throw list clause to the function definition.
• The type-list specifies the type of exception that may be thrown.
• Throwing any other kind of exception will cause abnormal
program termination.
• If you want to prevent a function from throwing any exception,
you may do so by making the type-list empty.
type function( type function(arg-list) throw(type list)
{ …
…
…
}
Contd.
• void f1(int) throw(int ,char, float)
• void f2(int) throw(int )
• A variation on the previous example is:
• void f3(int) throw(); // empty parentheses
• This declaration guarantees that no exception is
generated by the function f3.
• If a function exits through any exception that is not
allowed by an exception specification, it results in a call
to the predefined function unexpected().
• By default, unexpected() calls terminate() which by
default exits the program.
Copyright © 2003 Pearson
Education, Inc.
Slide 19
Type Conversion
• No automatic type conversions are done with
exceptions
– if double is in the exception specification, an int
cannot be thrown unless int is also in the
exception specification

Exceptions in C++ Object Oriented Programming.pptx

  • 1.
  • 2.
    Exception Handling • Generalmechanism for handling abnormal conditions • Predefined exceptions: Constraint violations, I/O errors, other illegalities • User-defined exceptions • Exception handlers specify remedial actions or proper shutdown. • Exception handling (EH) allows a programmer to provide code in the program to handle run-time errors or exceptional situations – this improves reliability
  • 3.
    EXCEPTIONS Exceptions are runtime anomalies or unusual conditions that a program may encounter during execution. Conditions such as • Division by zero • Access to an array outside of its bounds • Running out of memory • Running out of disk space It was not a part of original C++. It is a new feature added to ANSI C++.
  • 4.
    EXCEPTION HANDLING • Exceptionsare of 2 kinds – Synchronous Exception: • Out of rage • Over flow • Asynchronous Exception: – Error that are caused by causes beyond the control of the program • Keyboard interrupts • In C++ only synchronous exception can be handled.
  • 5.
    Exception handling mechanism •Find the problem (Hit the exception) • Inform that an error has occurred (Throw the exception) • Receive the error information (Catch the exception) • Take corrective action (handle the exception) • It is basically build upon three keywords – Try – Throw – Catch
  • 6.
    Example #include <iostream> using namespacestd; int main () { try { throw 10; } catch (int e) { cout << “We have a problem!!” << endl; } return 0; } Output : We have a problem!!!
  • 7.
    Contd. • The keywordtry is used to preface a block of statements which may generate exceptions. • When an exception is detected, it is thrown using a throw statement in the try block. • A catch block defined by the keyword catch catches the exception and handles it appropriately. • The catch block that catches an exception must immediately follow the try block that throws the exception.
  • 8.
    Contd. • Exceptions areobjects used to transmit information about a problem. • If the type of the object thrown matches the arg type in the catch statement, the catch block is executed. • If they do not match, the program is aborted • Often, Exceptions are thrown by functions that are invoked from within the try blocks. • The point at which the throw is executed is called the throw point. • Once an exception is thrown to the catch block, control cannot return to the throw point.
  • 9.
    THROWING MECHANISM • Thethrow statement can have one of the following 3 forms – throw(exception) – throw exception – throw //used to re-throw a exception • The operand object exception can be of any type, including constant. • It is also possible to throw an object not intended for error handling. • Throw point can be in a deeply nested scope within a try block or in a deeply nested function call. • In any case, control is transferred to the catch statement
  • 10.
    THROWING MECHANISM • Thethrow expression accepts one parameter as its argument and this is passed to the exception handler. • You can have a number of throw statements at different parts of your try block with different values being thrown try { // code if ( x ) throw 10; // code if (y) throw 20; //code }
  • 11.
    CATCHING MECHANISM • Thetype indicates the type of exception the catch block handles. • The parameter arg is an optional parameter name • The catch statement catches an exception whose type matches with the type of the catch argument. • If the parameter in the catch statement is named, then the parameter can be used in the exception handling code. • If a catch statement does not match the exception it is skipped. • More than one catch statement can be associated with a try block. • The exception handler can be identified by the keyword catch. • catch always takes only one parameter.
  • 12.
    Contd. • The firsthandler that yields a match is executed. • If several catch statement matches the type of an exception the first handler that matches the exception type is executed. • This way we can chain multiple exception handlers and only the one with the correct parameter type gets executed.
  • 13.
    Contd. try { throw exception; } catch(type1 arg) { //catch block 1 } catch(type2 arg) { // catch block 2 } …… catch(typeN arg) { // catch block N }
  • 14.
    Catch all exceptions try { try{ // code here } catch (int n) { throw; } } catch (...) { cout << "Exception occurred"; }
  • 15.
    RETHROWING AN EXCEPTION •A handler may decide to rethrow the exception caught without processing it. • In such a case we have to invoke throw without any arguments as shown below throw; • This causes the current exception to be thrown to the next enclosing try/catch sequence and is caught by a catch statement listed after the enclosing try block
  • 16.
    Example void myFunction() { try { throw "hello";// throw a char * } catch(const char *) { // catch a char * cout << "Caught char * inside myFunctionn"; throw ; // rethrow char * out of function } // myFunction } } int main() { cout << "Startn"; try { myFunction(); } catch(const char *) { cout << "Caught char * inside mainn"; } cout << "End"; return 0; }
  • 17.
    SPECIFYING EXCEPTION • Itis possible to restrict a function to throw certain specific exceptions by adding a throw list clause to the function definition. • The type-list specifies the type of exception that may be thrown. • Throwing any other kind of exception will cause abnormal program termination. • If you want to prevent a function from throwing any exception, you may do so by making the type-list empty. type function( type function(arg-list) throw(type list) { … … … }
  • 18.
    Contd. • void f1(int)throw(int ,char, float) • void f2(int) throw(int ) • A variation on the previous example is: • void f3(int) throw(); // empty parentheses • This declaration guarantees that no exception is generated by the function f3. • If a function exits through any exception that is not allowed by an exception specification, it results in a call to the predefined function unexpected(). • By default, unexpected() calls terminate() which by default exits the program.
  • 19.
    Copyright © 2003Pearson Education, Inc. Slide 19 Type Conversion • No automatic type conversions are done with exceptions – if double is in the exception specification, an int cannot be thrown unless int is also in the exception specification