Java 7 New Exception Features - Multicatch Exceptions and Try with Resources

Java 7 introduces few new features to the exception handling mechanism. We will discuss them quickly here.

 

Java 7 Multi-Catch Exceptions

With java 7, you can catch multiple exceptions using a single catch block as:

    try {

      File file = new File("filename.txt");

      Scanner sc = new Scanner(file);

      throw new SQLException();

    }

    catch (FileNotFoundException | SQLException e) {

      System.out.println("FileNotFoundException or SQLException called!!!");

    }

 

Important Note: In a Java 7 multi-catch block, you cannot catch both child and parent exception together in a multi-catch block. For example, below code fragment won't compile.

catch (FileNotFoundException | IOException e1) {

      // TODO Auto-generated catch block

      e1.printStackTrace();

}

This is because all exceptions are mapped to a single variable and hence there is no use of mentioning the subclass and superclass separately.

However, if you are using the older syntax, you can catch them both in separate catch blocks, as in below code fragment:

catch (FileNotFoundException e) {

  System.out.println("FileNotFoundException called!!!");

 }

catch (IOException e) {

  System.out.println("IOException called!!!");

 

Java 7 Try-with-Resources

Finally block is usually used to close and release resources.

With the new java 7 syntax, you can declare your resources withing the try itself and  java automatically closes those resources (if they are not already closed) after the execution of the try block. 

    try (BufferedReader reader = 

        new BufferedReader(

            new FileReader(

        "filename.txt"))) 

        {

          // try block contents

    } catch (IOException e1) {

      // TODO Auto-generated catch block

      e1.printStackTrace();

    }

The resource type specified within the try should implement java.lang.AutoCloseable.

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)