Skip to main content

Exception – Handle or Declare Rule



Exception – Handle or Declare Rule


Java – Exceptions

An exception (or exceptional event) is a problem that arises during the execution of a program. When an Exception occurs the normal flow of the program is disrupted and the program/Application terminates abnormally, which is not recommended, therefore, these exceptions are to be handled.

Advantage of Exception Handling

The core advantage of exception handling is to maintain the normal flow of the application. Exception normally disrupts the normal flow of the application that is why we use exception handling. Let’s take a scenario:
  1. statement 1;
  2. statement 2;
  3. statement 3;
  4. statement 4;
  5. statement 5;//exception occurs
  6. statement 6;
  7. statement 7;
  8. statement 8;
  9. statement 9;
  10. statement 10;

Suppose there are 10 statements in your program and there occurs an exception at statement 5, rest of the code will not be executed i.e. statement 6 to 10 will not run. If we perform exception handling, rest of the statement will be executed. That is why we use exception handling in java.

Handle Or Declare Rule

If some code within a method throws a checked exception, then the method must either handle the exception(using try-catch block) or it must specify the exception using throws keyword. Else, the code will not compile.

Catching Exceptions

A method catches an exception using a combination of the try and catch keywords. A try/catch block is placed around the code that might generate an exception. Code within a try/catch block is referred to as protected code, and the syntax for using try/catch looks like the following −

Syntax

try {
   // Protected code
}catch(ExceptionName e1) {
   // Catch block
}
The code which is prone to exceptions is placed in the try block. When an exception occurs, that exception occurred is handled by catch block associated with it. Every try block should be immediately followed either by a catch block or finally block.
A catch statement involves declaring the type of exception you are trying to catch. If an exception occurs in protected code, the catch block (or blocks) that follows the try is checked. If the type of exception that occurred is listed in a catch block, the exception is passed to the catch block much as an argument is passed into a method parameter.

Example

The following is an array declared with 2 elements. Then the code tries to access the 3rd element of the array which throws an exception.
// File Name : ExcepTest.java
import java.io.*;

public class ExcepTest {

   public static void main(String args[]) {
      try {
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e) {
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}
This will produce the following result −

Output

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block

The Throws/Throw Keywords

If a method does not handle a checked exception, the method must declare it using the throws keyword. The throws keyword appears at the end of a method’s signature.
You can throw an exception, either a newly instantiated one or an exception that you just caught, by using the throw keyword.
Try to understand the difference between throws and throw keywords, throws is used to postpone the handling of a checked exception and throwis used to invoke an exception explicitly.
The following method declares that it throws a RemoteException −

Example

import java.io.*;
public class className {

   public void deposit(double amount) throws RemoteException {
      // Method implementation
      throw new RemoteException();
   }
   // Remainder of class definition
}
A method can declare that it throws more than one exception, in which case the exceptions are declared in a list separated by commas. For example, the following method declares that it throws a RemoteException and an InsufficientFundsException −

Example

import java.io.*;
public class className {

   public void withdraw(double amount) throws RemoteException, 
      InsufficientFundsException {
      // Method implementation
   }
   // Remainder of class definition
}

The Finally Block

The finally block follows a try block or a catch block. A finally block of code always executes, irrespective of occurrence of an Exception.
Using a finally block allows you to run any cleanup-type statements that you want to execute, no matter what happens in the protected code.
A finally block appears at the end of the catch blocks and has the following syntax −

Syntax

try {
   // Protected code
}catch(ExceptionType1 e1) {
   // Catch block
}catch(ExceptionType2 e2) {
   // Catch block
}catch(ExceptionType3 e3) {
   // Catch block
}finally {
   // The finally block always executes.
}

Example

public class ExcepTest {

   public static void main(String args[]) {
      int a[] = new int[2];
      try {
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e) {
         System.out.println("Exception thrown  :" + e);
      }finally {
         a[0] = 6;
         System.out.println("First element value: " + a[0]);
         System.out.println("The finally statement is executed");
      }
   }
}
This will produce the following result −

Output

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
First element value: 6
The finally statement is executed
Note the following −
  • A catch clause cannot exist without a try statement.
  • It is not compulsory to have finally clauses whenever a try/catch block is present.
  • The try block cannot be present without either catch clause or finally clause.
  • Any code cannot be present in between the try, catch, finally blocks.
That’s it for Exception Handling in Java.
Useful Links:

Comments

Popular posts from this blog

Core Java Interview Questions and Answers

Core Java Interview Questions and Answers Hi guys, I am attempting to put as many of Core Java interview questions and answers as possible in this post. You can bookmark this post as the no. of questions here will increase over time as I keep updating them. Q.1 How is Java platform independent? Ans: Before going into the detail,first you have to understand what is the mean of platform? Platform consists of the computer hardware(mainly architecture of the microprocessor) and OS. Platform=hardware+Operating System Anything that is platform independent can run on any operating system and hardware. Java is platform indepedent so java can run on any operating system and hardware. Now question is how it is platform independent? This is because of the magic of Byte Code which is OS indepedent. When java compiler compile any code then it generate the byte code not the machine native code(unlike C compiler).Now this byte code need a interpreter to execute on a machine.This interp

Exception Hierarchy

Exception Hierarchy What is an Exception An exception is a problem that occurs during the execution of a program and disrupts the normal flow of  the program . Exception Hierarchy All the  checked  exceptions and unchecked exceptions are subclasses of Exception class and the Exception class is subclass of Throwable class as  shown  below. Types of Exceptions There are two types of exceptions in java 1. Checked exceptions 2. Unchecked exceptions 1) Checked Exceptions:  are the exceptions that are checked at compile time. If some code within a method throws a checked exception,  then the method must either handle the exception(using  try-catch  block) or it must specify the exception using  throws  keyword. Else, the code will not compile. 2) Unchecked   Exceptions:  are the exceptions that are not checked at compiled time, so it is not forced by the compiler to either handle or specify the exception. It is up to the programmers to be civilized, and specify or ca