Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
Java keywords

catch Keyword in Java

The catch keyword in Java is used in exception handling to catch exceptions that might be thrown in a try block. It allows the programmer to handle errors gracefully without crashing the program. The catch block follows a try block and contains code to handle the specific type of exception specified.

Usage

The catch block is used to handle exceptions that may occur in the try block. It provides a way to respond to different types of exceptions in a controlled manner.

Syntax

try {
    // Code that might throw an exception
} catch (ExceptionType e) {
    // Code to handle the exception
}
  • ExceptionType: The type of exception to catch (e.g., IOException, NullPointerException).
  • e: The exception object that contains information about the error.

Examples

Example 1: Basic Exception Handling

public class CatchExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[3]);  // This will throw ArrayIndexOutOfBoundsException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Array index is out of bounds!");
        }
    }
}

In this example, the try block contains code that may throw an ArrayIndexOutOfBoundsException. The catch block catches this exception and prints a message to the console.

Example 2: Multiple Catch Blocks

public class MultipleCatchExample {
    public static void main(String[] args) {
        try {
            int a = 30, b = 0;
            int result = a / b;  // This will throw ArithmeticException
        } catch (ArithmeticException e) {
            System.out.println("Cannot divide by zero!");
        } catch (Exception e) {
            System.out.println("An error occurred: " + e.getMessage());
        }
    }
}

This example demonstrates the use of multiple catch blocks to handle different types of exceptions. The try block contains code that may throw an ArithmeticException. If an ArithmeticException occurs, the first catch block handles it. If any other exception occurs, the second catch block handles it.

Example 3: Catching Multiple Exceptions in One Block

public class MultiCatchExample {
    public static void main(String[] args) {
        try {
            String text = null;
            System.out.println(text.length());  // This will throw NullPointerException
        } catch (NullPointerException | ArithmeticException e) {
            System.out.println("An error occurred: " + e.getMessage());
        }
    }
}

In this example, a single catch block is used to handle multiple types of exceptions (NullPointerException and ArithmeticException). This is a concise way to handle multiple exceptions that require the same handling logic.

Tips and Best Practices

  • Specific Exceptions First: Always catch more specific exceptions before catching more general exceptions (e.g., IOException before Exception).
  • Log Exceptions: Consider logging exceptions to help with debugging and error tracking.
    catch (IOException e) {
        Logger.getLogger(MyClass.class.getName()).log(Level.SEVERE, null, e);
    }
  • Avoid Empty Catch Blocks: Do not leave catch blocks empty. At a minimum, log the exception or print a message.
    catch (Exception e) {
        e.printStackTrace();  // Print stack trace for debugging
    }
  • Use Finally Block: If you need to execute code regardless of whether an exception occurs, use the finally block.
    try {
        // Code that might throw an exception
    } catch (Exception e) {
        // Handle the exception
    } finally {
        // Code to execute regardless of an exception
    }
  • Exception Propagation: If a method cannot handle an exception, consider propagating it to the caller using the throws keyword.
    public void readFile() throws IOException {
        // Code that might throw IOException