Exceptions in C++ Object Oriented Programming.pptx
The document discusses exception handling in C++, which is a mechanism for managing abnormal conditions that occur during program execution. It outlines the types of exceptions, the process of throwing and catching exceptions, and the use of keywords 'try', 'throw', and 'catch' to handle these exceptions. It also describes how programmers can specify which exceptions a function may throw and the implications of mismatched exception types.
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.
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
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.