Exception propagation in java

Exception propagation:

Exception propagation is a way of propagating exception from method to method. Let an exception occur in a method at the top of the call stack and if it is not caught then it propagates to previous method in the call stack, if it is not caught here then it again propagates to previous method in the call stack and so on until either it is caught or reach the bottom of the stack.

Example: Exception propagation in case of unchecked exception.

ExceptionPropagationExample1.java

/**
 * This program used to show the use of 
 * unchecked exception propagation.
 * @author w3spoint
 */
class ArithmaticTest{
	/**
	 * This method is used to divide two integers.
	 * @param num1
	 * @param num2
	 * @author w3spoint
	 */
	public void division(int num1, int num2) {
		//java.lang.ArithmeticException here 
                //and not caught hence propagate to method1.
		System.out.println(num1/num2);
	}
 
	public void method1(int num1, int num2) {
		//not caught here and hence propagate to method2.
		division(num1, num2);
	}
 
	public void method2(int num1, int num2){
		try{
			method1(num1, num2);
		}catch(Exception e){//caught exception here.
			System.out.println("Exception Handled");
		}
	}
}
 
public class ExceptionPropagationExample1 {
	public static void main(String args[]){
		//creating ArithmaticTest object
		ArithmaticTest obj =  new ArithmaticTest();
 
		//method call
		obj.method2(20, 0);
	}
}

Output:

Exception Handled

Download this example.

Example: Exception propagation in case of checked exception.

Note: Checked exceptions are not propagated in exception change.
ExceptionPropagationExample2.java

import java.io.IOException;
 
/**
 * This program used to show the use of 
 * checked exception propagation.
 * @author w3spoint
 */
class Test{
 
	public void method3() {
		//compile time error here because 
                //checked exceptions can't be propagated.
		throw new IOException();
	}
 
	public void method1(){
		method3();
	}
 
	public void method2(){
		try{
			method1();
		}catch(Exception e){
			System.out.println("Exception Handled");
		}
	}
}
 
public class ExceptionPropagationExample2 {
	public static void main(String args[]){
		//creating Test object
		Test obj =  new Test();
 
		//method call
		obj.method2();
	}
}

Output:

Exception in thread "main" java.lang.Error: 
Unresolved compilation problem:
Unhandled exception type IOException
at com.w3spoint.business.Test.method3
(ExceptionPropagationExample2.java:13)
at com.w3spoint.business.Test.method1
(ExceptionPropagationExample2.java:17)
at com.w3spoint.business.Test.method2
(ExceptionPropagationExample2.java:22)
at com.w3spoint.business.ExceptionPropagationExample2.main
(ExceptionPropagationExample2.java:35)

Download this example.
 
Next Topic: Exception handling with method overriding in java.
Previous Topic: throws in java with example.

 

Content Protection by DMCA.com
Please Share