বন্ধ করার বিরুদ্ধে আরেকটি যুক্তি OutputStream
। এই সার্লেটটি দেখুন। এটি একটি ব্যতিক্রম ছোঁড়ে। ব্যতিক্রমটি একটি ত্রুটি জেএসপি-তে ওয়েব.এক্সএমএল এ ম্যাপ করা হয়েছে:
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 {
}
}
}
ওয়েব.এক্সএমএল ফাইলটিতে রয়েছে:
<?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()
উপরের সার্লেলে লাইনটি অন-মন্তব্য করেন তবে পুনরায় অ্যাপ্লিকেশনটি পুনরায় লোড করুন /Erroneous
এবং ব্রাউজারে আপনি কিছুই দেখতে পাবেন না। আসলে কী হচ্ছে সে সম্পর্কে আমার কোনও ধারণা নেই, তবে আমি অনুমান করি যে out.close()
ত্রুটি পরিচালনা করা বাধা দেয়।
টমক্যাট 7.0.50, জাভা EE 6 নেটবিনস 7.4 ব্যবহার করে পরীক্ষিত।
close()
এমন একটি সরবরাহ করবেন যা কিছুই করে না। কি আপনি কি করা উচিত ঘনিষ্ঠ যে closeable সম্পদ।