Why write Try-With-Resources without Catch or Finally?
java, try-with-resources
Solution
As explained above this is a feature in Java 7 and beyond. `try with resources` allows to skip writing the `finally` and closes all the resources being used in `try-block` itself. As stated in Docs
Any object that implements java.lang.AutoCloseable, which includes all objects which implement java.io.Closeable, can be used as a resource.
See this code example
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
In this example the resource is `BufferReader` object as the class implements the interface `java.lang.AutoCloseable` and it will be closed whether the try block executes successfully or not which means that you won't have to write `br.close()` explicitly.
Another important thing to notice here is that if you are writing the `finally` block yourself and both your `try` and `finally` block throw exception then the exception from `try` block is supressed.
While on the other hand if you are using `try-with-resources` statement and exception is thrown by both `try` block and `try-with-resources` statement then in this case the exception from `try-with-resources` statement is suppressed.
As the @Aaron has answered already above I just tried to explain you. Hope it helps.
Source: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
Problem
Why write Try without a Catch or Finally as in the following example? ``` protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet tryse</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet tryse at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } } ```