Introduction to Exception Handling in C++

introduction to exception handling in C++


Exception is a concept that is associated with the happening of some unnatural condition like division by zero, stack overflow, etc. In simple words, the term exception is shorthand for the phrase “exceptional event.”


An exception is an event, which occurs during the execution of a program that disrupts the normal flow of the program’s instructions.

When an error occurs within a method, the method creates an object and hands it off to the runtime system. The object, called an exception object, contains information about the error, including its type and the program’s state when the error occurred. Creating an exception object and handing it to the runtime system is called throwing an exception.

After a method throws an exception, the runtime system attempts to find something to handle it. The set of possible “somethings” to handle the exception is the ordered list of methods that had been called to get the method where the error occurred. The list of methods is known as the call stack as shown in the figure below:

the call stackThe runtime system searches the call stack for a method that contains a block of code that can handle the exception. This block of code is called an exception handler. The search begins with the method in which the error occurred and proceeds through the call stack in the reverse order in which the methods were called. When an appropriate handler is found, the runtime system passes the exception to the handler. An exception handler is considered appropriate if the type of the exception object thrown matches the type that can be handled by the handler. The exception handler chosen is said to catch the exception. Suppose the runtime system exhaustively searches all the methods on the call stack without finding an appropriate exception handler, as shown in the next figure. In that case, the runtime system (and, consequently, the program) terminates. Using exceptions to manage errors has some advantages over traditional error-management techniques.

Searching the call stack for the exception handlerThere are five runtime error messages associated with exceptions:

  • No handler for the exception.
  • Unexpected exception thrown
  • An exception can only be re-thrown in a handler
  • During stack unwinding, a destructor must handle its own exception
  • Out of memory

When errors are detected at runtime, the error message displays the type of the current exception and one of the five error messages. By default, the predefined function terminate() is called, which then calls abort(). The compiler uses the information provided in the exception specification to optimize code production. For example, table entries for functions that do not throw exceptions are suppressed, and Runtime checking for exception specifications of functions is eliminated wherever possible.

Kinds of Exceptions

(i) Checked exception:

These are exceptional conditions that a well-written application should anticipate and recover from. A well-written program will catch this exception and notify the user of the mistake, possibly prompting a corrected file name. Checked exceptions are subject to the Catch or Specify Requirement. All exceptions are checked exceptions, except for those indicated by Error, RuntimeException, and their subclasses.

(ii) Error:

These are exceptional conditions that are external to the application, and that the application usually cannot anticipate or recover from. Errors are not subject to the Catch or Specify Requirement. Errors are those exceptions indicated by Error and its subclasses.

(iii) Runtime exception:

These are exceptional conditions that are internal to the application, and that the application usually cannot anticipate or recover from. These usually indicate programming bugs, such as logic errors or improper use of an API. Runtime exceptions are not subject to the Catch or Specify Requirement. Runtime exceptions are those indicated by Runtime Exception and its subclasses. Errors and runtime exceptions are collectively known as unchecked exceptions.

Always remember:

An Exception is an error or an unexpected events useful for object oriented programming,



Highly motivated, Hard-working, and Resourceful Programmer. I Love To Explain And Teach Technology, Solve Tech Problems And Learn Something New Every Day.

Leave a Reply