Exception Propagation

Uncaught exceptions are propagated in the call stack until stack becomes empty, this propagation is called Exception Propagation.
After a method throws an exception, the runtime system searches the call stack for a method that contains a block of code(exception handler) that can handle the exception. 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. Also, there’s a note-worthy point:
For example:
Lets say, we have three methods m3(), m2() and m1(). Where  m3() calls in m2(), and m2() calls in m1(). So when
1) An exception occurs in the m3() and m3() don’t have any exception handler.
2) Uncaught exception will be propagated downward in stack i.e it will check appropriate exception handler in the m2().
3) Again in m2() if we don’t have any exception handler then again exception is propagated downward to m1() where it finds exception handler.
Program example in Java:
class EP{
void m3(){
int result = 100 / 0;  //Exception Generated
void m2()
void m1()
catch(Exception e)
System.out.println(“Exception is handled here”);
public static void main(String args[]){
EP obj=new EP();
System.out.println(“Continue with Normal Flow…”);


  1. Sebesta,”Concept of programming Language”, Pearson Edu
  2. Louden, “Programming Languages: Principles & Practices” , Cengage Learning
  3. Tucker, “Programming Languages: Principles and paradigms “, Tata McGraw –Hill.
  4. E Horowitz, “Programming Languages”, 2nd Edition, Addison Wesley