<c:catch> टैग अपने बॉडी में होने वाले किसी भी Throwable को पकड़ता है और वैकल्पिक रूप से इसे उजागर करता है। इसका उपयोग त्रुटि संभाल के लिए और समस्या से अधिक सुंदर तरीके से निपटने के लिए किया जाता है।
एट्रिब्यूट्स
<c:catch> टैग में निम्नलिखित एट्रिब्यूट्स होते हैं:
| एट्रिब्यूट | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
| var | java.lang.Throwable को रखने के लिए वेरिएबल का नाम यदि बॉडी में एलिमेंट्स द्वारा फेंका गया हो | नहीं | कोई नहीं |
उदाहरण
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:catch> Tag Example</title>
</head>
<body>
<c:catch var="catchException">
<% int x = 5/0; %>
</c:catch>
<c:if test="${catchException != null}">
<p>The exception is : ${catchException} <br />
There is an exception: ${catchException.message}</p>
</c:if>
</body>
</html>
आउटपुट
The exception is : java.lang.ArithmeticException: / by zero There is an exception: / by zero
मुख्य बिंदु
- स्कोप: केवल अपने बॉडी के भीतर फेंके गए अपवादों को पकड़ता है (नेस्टेड टैग्स सहित)।
- var एट्रिब्यूट: यदि प्रदान किया गया है, तो पकड़े गए अपवाद को निर्दिष्ट वेरिएबल में संग्रहीत करता है; अन्यथा अपवाद निगल लिया जाता है।
- Throwable पकड़ता है: Exception, Error, RuntimeException सभी पकड़े जाते हैं।
- निगलने का व्यवहार: var के बिना, अपवाद चुपचाप निगल लिया जाता है (सावधानी से उपयोग करें)।
सर्वोत्तम अभ्यास
- हमेशा डिबगिंग/लॉगिंग के लिए
varका उपयोग करें। <c:if test="${catchException != null}">के साथ पकड़े गए अपवाद को संभालें।- पेज-स्तरीय त्रुटि संभाल के लिए,
<%@ page errorPage="error.jsp" %>या web.xml में<error-page>पसंद करें। - व्यावसायिक तर्क अपवादों के लिए, कंट्रोलर/सर्विस लेयर में संभालें, व्यू लेयर (JSP) में नहीं।
सीमाएं
- केवल रेंडरिंग चरण के दौरान होने वाले अपवादों को पकड़ता है।
- अनुवाद/संकलन समय त्रुटियों को नहीं पकड़ सकता।
- फिल्टर/सर्वलेट में होने वाले अपवादों के लिए उपयुक्त नहीं।