0% found this document useful (0 votes)
14 views

Exception Handling C++

The document discusses exception handling in C++. It describes what exceptions are, the different types of exceptions, and how exceptions are handled using try, throw, and catch keywords. It provides examples to demonstrate exception handling mechanisms in C++ code.

Uploaded by

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

Exception Handling C++

The document discusses exception handling in C++. It describes what exceptions are, the different types of exceptions, and how exceptions are handled using try, throw, and catch keywords. It provides examples to demonstrate exception handling mechanisms in C++ code.

Uploaded by

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

EXCEPTION HANDLING IN C++

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


EXCEPTION HANDLING
It was not a part of original C++

 It is a new feature added to ANSI C++

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
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 upon three keywords


 try
try block
 throw Detects and
throw an 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

More than one catch statement can be associated with a try block
EXCEPTION HANDLING MECHANISM (CONT…)

try
{
… // Block of statements which may cause exceptions and // throws an exception
throw exception;

}
catch(type arg)
{



}
CATCHING MECHANISM
try
{
throw exception;
}
catch(type1 arg)
{
// catch block 1
}
catch(type2 arg)
{
// catch block 2
}


catch(typeN arg)
{
// catch block N
}
EXCEPTION HANDLING MECHANISM (CONT…)

Exceptions are objects used to transmit information about a problem

When an exception is thrown, the exception handlers are searched in order


for a match

 If several catch statement matches the type of an exception the first handler
that matches the exception type is executed

If the type of the object thrown matches the arg type in one of the catch
statements, the catch block is executed

 If they do not match, the program is aborted


CATCHING MECHANISM

There is a special catch block called


catch all block

written as catch(…)

Can be used to catch all types of exceptions


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
Class exception

The standard C++ base class for all exceptions

Provides derived classes with virtual function what


Returns the exception’s stored error message
Standard Library exception classes
Example 1
int main()
{
int x = -1;
cout << "Before try \n";
try
{ Output
cout << "Inside try \n";
if (x < 0)
{ terminate called after throwing an instance of
throw x;
} 'char‘
}
catch (double x )
{ This application has requested the Runtime to
cout << "Exception Caught \n";
terminate it in an unusual way. Please contact the
}
application's support team for more information.
cout << "After catch (Will be executed) \n";

return 0;
Example 2
int main()
{
int x = -1;
cout << "Before try \n";
try
{
cout << "Inside try \n";
Output
if (x < 0)
{
throw x;
Before try
cout << "After throw (Never executed) \n"; Inside try
}
} Exception Caught
catch (int x )
After catch (Will be executed)
{
cout << "Exception Caught \n";
}

cout << "After catch (Will be executed) \n";

return 0;
Example 3
#include <iostream>
using namespace std;

int main()
{
try Output
{
throw 10;
} Exception caught in the second catch block
catch (double y)
{
cout << “Exception caught in the first catch block" << y;
}
catch (int z)
{
cout << "Exception caught in the second catch block\n";
}

return 0;
}
Example 4
#include <iostream>
using namespace std;

int main()
{
try Output
{
throw 10;
} Exception caught in the default catch
catch (double y)
block
{
cout << “Exception caught in the first catch block" << y;
}
catch (…)
{
cout << "Exception caught in the default catch block\n";
}

return 0;
}
Example 5
#include <iostream>
using namespace std;

int main()
{
try
{ Output
try
{
throw 20; Handle Partially
}
catch (int n) Handle remaining
{
cout << "\nHandle Partially ";
throw; // Re-throwing an exception
}
}
catch (int n)
{
cout << "\nHandle remaining ";
}
return 0;
Example 5
#include <iostream> int main()
using namespace std; {
try
class Test {
Test t1;
{
throw 10;
public: }
Test() catch (int i)
{ {
cout << "Constructor of Test executed " << endl; cout << "Caught " << i << endl;
}
} }
~Test()
{
cout << "Destructor of Test executed " << endl;
Output
}
};
Constructor of Test executed
Destructor of Test executed

You might also like