Try-with-resources in Java 7
Try-with-resources in Java 7 is a new exception handling mechanism that makes it easier to correctly close resources that are used within a try-catch block.
Resource Management With Try-Catch-Finally, Old School Style
Managing resources that need to be explicitly closed is somewhat tedious before Java 7.
private static void printFile() throws IOException {
InputStream input = null;
try {
input = new FileInputStream("file.txt");
int data = input.read();
while(data != -1){
System.out.print((char) data);
data = input.read();
}
} finally {
if(input != null){
input.close();
}
}
}
The code marked in bold is where the code can throw an Exception
. As you can see, that can happen in 3 places inside the try
-block, and 1 place inside the finally
-block.
The finally
block is always executed no matter if an exception is thrown from the try
block or not. That means, that the InputStream
is closed no matter what happens in the try
block. Or, attempted closed that is. TheInputStream
's close()
method may throw an exception too, if closing it fails.