Warum schreiben Try-Mit-Ressourcen ohne Catch-oder Finally?
Warum schreiben Versuchen, ohne einen Catch-oder Finally-wie im folgenden Beispiel?
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>");
}
}
- Lesen Sie über die versuchen mit den Ressourcen (Java 7)
- Siehe Try mit Ressourcen
- Duplikat von "Macht es Sinn, zu tun, "try-finally" ohne "fangen"?"
- Dies ist in keiner Weise ein Duplikat der...
- Having said that, ich nicht denke, das ist die erste Frage zu try-mit-Ressourcen. Trotzdem, +1, einfach weil ich noch nie etwas gehört habe diese Funktion vor!
- Richtig, mein Fehler ich war zu schnell.
- Möglich, Duplikat der Warum ist try-mit-Ressourcen catch-block selektiv freiwillig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie oben erklärt, dies ist ein feature in Java 7 und darüber hinaus.
try with resources
können Sie überspringen, schreiben diefinally
und schließt alle Ressourcen intry-block
selbst. Wie bereits in DocsSiehe das code-Beispiel
In diesem Beispiel wird die Ressource
BufferReader
Objekt wie die Klasse implementiert die Schnittstellejava.lang.AutoCloseable
und es wird geschlossen werden, ob der try-block erfolgreich ausgeführt wird oder nicht, was bedeutet, dass Sie nicht haben, um zu schreibenbr.close()
ausdrücklich.Eine weitere wichtige Sache, hier zu bemerken ist, dass, wenn Sie schreiben die
finally
blockieren sich selbst und Ihre beidentry
undfinally
block Wurf Ausnahme, dann die Ausnahme vontry
block ist unterdrückt.Während auf der anderen Seite, wenn Sie mit
try-with-resources
Aussage und Ausnahme wird geworfen, indem sowohltry
block undtry-with-resources
Erklärung, dann in diesem Fall die Ausnahme vontry-with-resources
- Anweisung unterdrückt wird.Als @Aaron hat bereits beantwortet ich oben gerade versucht zu erklären. Hoffe, es hilft.
Quelle: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
using
nicht schützt in irgendeiner Weise gegen die Ausnahmen, die es nur garantiert Ressource Verschluss am Ende des Blocks. In C#, die Sie am häufigsten zu kombinierenusing
Blöcke mittry
Blöcke. Java isttry-with-resources
tut dies zusammen.Dies ist ein neues feature in Java 7 und darüber hinaus. Ohne diese, brauchen Sie einen
finally
block schließt die RessourcePrintWriter out
. Also, der obige code ist äquivalent zu:Sehen Das try-with-resources Statement