Unreachable catch block

Always contruct try-catch blocks in a way that assumes catching Exceptions from more detailed to more generic.

Example

try {
    String [] tab = null;
    System.out.println(tab[3]);
} catch (Exception e) {
    System.out.println("Exception");
} catch (NullPointerException e) {
    System.out.println("NullPointerException");
}

The above presented snippet will cause compilation error:

Unreachable catch block for NullPointerException. It is already handled by the catch block for Exception

Solution

try {
    String [] tab = null;
    System.out.println(tab[3]);
} catch (NullPointerException e) {
    System.out.println("NullPointerException");
} catch (Exception e) {
    System.out.println("Exception");
}

This way, if you invoke this snippet you’ll get the following output on the screen: “NullPointerException”.

Previous Post
Next Post