समापन के खिलाफ एक और तर्क OutputStream
। इस सर्वलेट को देखो। यह एक अपवाद फेंकता है। JSP में अपवाद को त्रुटि JSP में मैप किया गया है:
package ser;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "Erroneous", urlPatterns = {"/Erroneous"})
public class Erroneous extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
try {
throw new IOException("An error");
} finally {
// out.close();
}
}
}
Web.xml फ़ाइल में शामिल हैं:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/error.jsp</location>
</error-page>
</web-app>
और त्रुटि .jsp:
<%@page contentType="text/html" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Error Page</title>
</head>
<body>
<h1><%= exception.getMessage()%></h1>
</body>
</html>
जब आप /Erroneous
ब्राउज़र में लोड करते हैं तो आप "एक त्रुटि" प्रदर्शित करते हुए त्रुटि पृष्ठ देखते हैं। लेकिन अगर आप अन-कमेंट करते हैंout.close()
ऊपर दिए गए सर्वलेट में लाइन को , तो deeploy de application, और पुनः लोड करें /Erroneous
आपको ब्राउज़र में कुछ भी दिखाई नहीं देगा। वास्तव में क्या हो रहा है, इसके बारे में मेरे पास कोई सुराग नहीं है, लेकिन मुझे लगता है कि out.close()
त्रुटि से निपटने से रोकता है।
टॉमकैट 7.0.50 के साथ परीक्षण किया गया, नेटबीन 7.4 का उपयोग करके जावा ईई 6।
close()
कुछ भी नहीं प्रदान करेगा । क्या आप क्या करना चाहिए करीब हर closeable संसाधन है।