Pourquoi écrire Try without Catch ou Finally?
Pourquoi écrire un essai sans Attraper ou Enfin comme dans l'exemple suivant?
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>");
}
}
source d'informationauteur Umair Hashmi
Vous devez vous connecter pour publier un commentaire.
Comme expliqué plus haut, ceci est une fonctionnalité de Java 7 et au-delà.
try with resources
permet d'éviter l'écriture de lafinally
et ferme toutes les ressources utilisées danstry-block
lui-même. Comme indiqué dans DocsVoir cet exemple de code
Dans cet exemple, la ressource est
BufferReader
objet que la classe implémente l'interfacejava.lang.AutoCloseable
et il sera fermé si le bloc try exécute avec succès ou non, ce qui signifie que vous n'aurez pas à écrirebr.close()
explicitement.Une autre chose importante à noter ici est que si vous écrivez à l'
finally
bloquer vous-même et votretry
etfinally
bloc de jeter l'exception alors l'exception detry
bloc est supprimé.Tandis que, d'autre part, si vous êtes en utilisant
try-with-resources
déclaration et d'exception est levée par les deuxtry
bloc ettry-with-resources
déclaration alors dans ce cas l'exception detry-with-resources
instruction est supprimé.Que l' @Aaron a déjà répondu ci-dessus, j'ai juste essayé de vous expliquer. Espérons que cela aide.
Source: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
C'est une nouvelle fonctionnalité de Java 7 et au-delà. Sans cela, vous auriez besoin d'un
finally
bloc qui ferme la ressourcePrintWriter out
. Donc le code ci-dessus est équivalente à:Voir Le try-with-resources Déclaration