[go: up one dir, main page]

0% found this document useful (0 votes)
385 views21 pages

Balaguru Exception

The document discusses exception handling in C++. It defines exceptions as runtime errors or unusual conditions encountered during program execution. It describes the try-catch mechanism for detecting and handling exceptions, including throwing exceptions with throw and catching them with catch blocks that match the exception type. It also covers rethrowing exceptions and specifying the exception types a function can throw in a throw list.

Uploaded by

Kaustubh Saksena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
385 views21 pages

Balaguru Exception

The document discusses exception handling in C++. It defines exceptions as runtime errors or unusual conditions encountered during program execution. It describes the try-catch mechanism for detecting and handling exceptions, including throwing exceptions with throw and catching them with catch blocks that match the exception type. It also covers rethrowing exceptions and specifying the exception types a function can throw in a throw list.

Uploaded by

Kaustubh Saksena
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

EXCEPTION HANDLING

Resources
[1] Object Oriented Programming with C++ (3rd Edition)
E Balagurusamy
[2] Teach Yourself C++ (3rd Edition) H Schildt
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 (CONT…)
 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)


EXCEPTION HANDLING MECHANISM
 It is basically build
try block
upon three keywords
 Try Detects and
throws an
 Throw
exception
 Catch

Exception object

catch block

Catch and handle


the exception
EXCEPTION HANDLING MECHANISM (CONT…)
 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.
EXCEPTION HANDLING MECHANISM (CONT…)
try
{
… // Block of statements
throw exception; // which detect and
… // throws an exception
}
catch(type arg) // catch exception
{
… // Block of statement
… // that handles the
… // exception
}
EXCEPTION HANDLING MECHANISM (CONT…)
 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 using


the abort() function (default).

 [E.B.] Program 13.1


EXCEPTION HANDLING MECHANISM (CONT…)
 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.

 [E.B.] Program 13.2


EXCEPTION HANDLING MECHANISM (CONT…)

Invoke function

throw point try block catch block


Invokes a
Function that
function that Catch and handle
causes an
contains an the exception
exception
exception

Throw exception
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.
THROWING MECHANISM (CONT…)
 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.
CATCHING MECHANISM
 The type indicates the catch(type arg)
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.
CATCHING MECHANISM (CONT…)
 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.
CATCHING MECHANISM (CONT…)
try
{
throw exception;
}
catch(type1 arg)
{
// catch block 1
}
catch(type2 arg)
{
// catch block 2
}


catch(typeN arg)
{
// catch block N
}
CATCHING MECHANISM (CONT…)
 When an exception is thrown, the exception
handlers are searched in order for a match.

 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.

 [E.B.] Program 13.3


CATCHING MECHANISM (CONT…)
 Catch all exception

catch (…)
{
// statement for processing
// all exception
}

 [E.B.] Program 13.4


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

 [E.B.] Program 13.5


SPECIFYING EXCEPTION
 It is possible to restrict a function to throw certain
specific exceptions by adding a throw list clause to
the function definition.

type function(arg-list) throw(type-list)


{
………
………
………
}
 [E.B.] Program 13.6
SPECIFYING EXCEPTION (CONT…)
 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.
LECTURE CONTENTS
 [1] Object Oriented Programming with C++ (3rd
Edition) E Balagurusamy
 Chapter 13 (Full)
 [2] ] Teach Yourself C++ (3rd Edition) H Schildt
 Examples only
 Study the examples from both books carefully

You might also like