• August 29, 2014
  • Core Java
  • Comments Off on Exception propagation in java

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 javawithease
 */
class ArithmaticTest{
	/**
	 * This method is used to divide two integers.
	 * @param num1
	 * @param num2
	 * @author javawithease
	 */
	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 javawithease
 */
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.javawithease.business.Test.method3
(ExceptionPropagationExample2.java:13)
at com.javawithease.business.Test.method1
(ExceptionPropagationExample2.java:17)
at com.javawithease.business.Test.method2
(ExceptionPropagationExample2.java:22)
at com.javawithease.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.

Related Topics:

Some important terms for Exception Handling.
Exception handling in java.
try and catch blocks in java with example.
Multiple catch blocks in java with example.
Nested try block in java with example.
Finally in java with example.
throw in java with example.
throws in java with example.
Exception propagation in java with example.
Exception handling with method overriding in java.
Custom exception in java with example.
Commonly used exception methods of Throwable class in java.

 


Comments are closed.