Before Java 7, we can close a resource with finally :

	try{
		//open resources
	}catch(Exception){
		//handle exception
	}finally{
		//close resources
	}

In Java 7, a new try-with-resources approach is introduced, it helps to close resources automatically.

	try(open resources, one or more resources){
		//...
	}
	//after try block, the resource will be closed automatically.

1. BufferedReader

1.1 Before Java 7, we have to close the BufferedReader manually.

TryWithResource1.java

package com.favtuts.classic;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TryWithResource {

    public static void main(String[] args) {
        

        // Example 1:  close the BufferedReader manually
        BufferedReader br = null;
        String line;

        try {

            br = new BufferedReader(new FileReader("C:\\testing.txt"));
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null) br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
    
}

1.2 In Java 7, with try-with-resources, the BufferedReader will be closed automatically after try block.

package com.favtuts.classic;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TryWithResource {

    public static void main(String[] args) {
  
        // Example 2: try-with-resources block
        String line;

        try (BufferedReader br = new BufferedReader(
                new FileReader("C:\\testing.txt"))) {

            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        // br will be closed automatically
    }
    
}

2. JDBC

Java example to auto close 2 resources in a try-with-resources statement.

2.1 Before Java 7

	@Override
    public void update(int postId, String metaValue) {

        Connection connection = null;
        PreparedStatement ps = null;
		
        try {
            connection = dataSource.getConnection();
            ps = connection.prepareStatement(SQL_UPDATE_POST_META);

            ps.setString(1, metaValue);
            ps.setInt(2, postId);
            ps.setString(3, GlobalUtils.META_KEY);

            ps.executeUpdate();

        } catch (Exception e) {
            //
        } finally {

            if (ps != null) {
                ps.close();
            }

            if (connection != null) {
                connection.close();
            }
        }

    }

2.2 Java 7 try-with-resources

	@Override
    public void update(int postId, String metaValue) {

        try (Connection connection = dataSource.getConnection();
             PreparedStatement ps = connection.prepareStatement(SQL_UPDATE_POST_META)) {
            ps.setString(1, metaValue);
            ps.setInt(2, postId);
            ps.setString(3, GlobalUtils.META_KEY);

            ps.executeUpdate()

        } catch (Exception e) {
            //...
        }
		
    }

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-basic/classic

References

Leave a Reply

Your email address will not be published. Required fields are marked *