|
C++ Programming Tutorials
Basics of C++
Structure of a
program
Variables
Data types
Constants
Operators
Basic Input/output
Control Structures
Control Structures
Functions (I)
Functions (II)
Compound Data Types
Arrays
Character Sequences
Pointers
Dynamic Memory
Data Structures
Other Data Types
Object Oriented Programming
Classes [I]
Classes [II]
Friendship & Inheritance
Polymorphism
Advanced Concepts
Templates
Namespaces
Exceptions
Type Casting
Preprocessor Directives
C++ Standard Library
Input/output with Files
Soft Skills
Communication Skills
Leadership Skills
.........More
|
|
C++ Programming Tutorials
Exceptions
Exceptions provide a way to react to exceptional circumstances (like
runtime errors) in our program by transferring control to special
functions called handlers.
To catch exceptions we must place a portion of code under exception
inspection. This is done by enclosing that portion of code in a try
block. When an exceptional circumstance arises within that block, an
exception is thrown that transfers the control to the exception handler.
If no exception is thrown, the code continues normally and all handlers
are ignored.
A exception is thrown by using the throw keyword from inside the try
block. Exception handlers are declared with the keyword catch, which
must be placed immediately after the try block:
// exceptions
#include <iostream>
using namespace std;
int main () {
try
{
throw 20;
}
catch (int e)
{
cout << "An exception occurred. Exception Nr. " << e << endl;
}
return 0;
} |
An exception
occurred. Exception Nr. 20
|
The code under exception handling is enclosed in a try block.
In this example this code simply throws an exception:
A throw expression accepts one parameter (in this case the
integer value 20), which is passed as an argument to the exception handler.
The exception handler is declared with the catch keyword. As you can see, it
follows immediately the closing brace of the try block. The catch format is
similar to a regular function that always has at least one parameter. The type
of this parameter is very important, since the type of the argument passed by
the throw expression is checked against it, and only in the case they match, the
exception is caught.
We can chain multiple handlers (catch expressions), each one with a different
parameter type. Only the handler that matches its type with the argument
specified in the throw statement is executed.
If we use an ellipsis (...) as the parameter of catch, that handler will catch
any exception no matter what the type of the throw exception is. This can be
used as a default handler that catches all exceptions not caught by other
handlers if it is specified at last:
try {
// code here
}
catch (int param) { cout << "int exception"; }
catch (char param) { cout << "char exception"; }
catch (...) { cout << "default exception"; } |
In this case the last handler would catch any exception
thrown with any parameter that is neither an int nor a char.
After an exception has been handled the program execution resumes after the
try-catch block, not after the throw statement!.
It is also possible to nest try-catch blocks within more external try blocks. In
these cases, we have the possibility that an internal catch block forwards the
exception to its external level. This is done with the expression throw; with no
arguments. For example:
try {
try {
// code here
}
catch (int n) {
throw;
}
}
catch (...) {
cout << "Exception occurred";
} |
NEXT >> Exception
Specifications
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
C Aptitude Questions
for more C Aptitude Interview Questions with Answers
Check
C Interview Questions
for more C Interview Questions with Answers.
|