JSP Exception Handling

Introduction to JSP Exception Handling

किसी JSP page में exception java code द्वारा generate होती है। जैसा की आपको पता है JSP को java API access provided है इसलिए आप किसी JSP page में exception handling java code की तरह भी कर सकते है और दूसरे JSP features के द्वारा भी आप exception handle कर सकते है। लेकिन उससे पहले आइये देखते है की exceptions क्या होती है, कितने प्रकार की होती है और इन्हें java में कैसे organize किया गया है।

Types Of Exceptions

Java में सभी errors और exceptions के लिए super class Throwable है। ये class सभी possible exceptions को error messages के साथ store करती है। ये class दूसरी classes को exceptions handle करने के लिए methods और interfaces provide करती है। Throwable को Exception और Error नाम की 2 classes inherit करती है।

  1. Exception - एक exception कोई भी ऐसा event होता है जो program execution के समय पैदा होता है और उससे program का normal execution नहीं हो पाता है। Exception को checked और unchecked दो categories में divide किया गया है।
  2. Checked Exception - ये वो exceptions होती है जो compilation के समय detect कर ली जाती है। Execution से पहले program को ऐसी exceptions के लिए check किया जाता है।
  3. Unchecked Exception - ये वो exceptions होती है जो compilation के समय detect नहीं हो पाती है और ignore हो जाती है।
  4. Error - एक error ऐसी situation होती है जो programmer के control से बाहर होती है। जिसे किसी भी तरह programmer रोक नहीं सकता है। जैसे की यदि computer में supportive hardware नहीं है तो program run नहीं हो सकता है। ऐसी situation Error class की category में आती है।

यदि आप java में exceptions के बारे में और जानना चाहते है तो Java Exception Handling In Hindi tutorial पढ़ सकते है।

Ways to Handle JSP Exceptions

JSP में आप exceptions को 3 प्रकार से handle कर सकते है।

  1. Using try & catch block - इस तरीके में आप java की तरह ही try or catch blocks के माध्यम से exceptions handle करते है।
  2. Using exception page - इस तरीके में एक exception page create किया जाता है। दूसरे JSP में exception आने पर इस page को refer कर दिया जाता है।
  3. Using web.xml file - इस तरीके में exception handling के लिए आप web.xml file को configure करते है।

इन सभी तरीकों के बारे में निचे detail से दिया जा रहा है।

Using Try & Catch Block

Try और catch block के माध्यम से आप exception java में पहले handle कर चुके है। JSP में भी इस method को यूज़ किया जा सकता है। यदि आप किसी छोटे code में आयी exception को handle करना चाहते है तो ये approach यूज़ कर सकते है। यदि आपकी web application में बहुत से JSP page है जो exception generate कर सकते है तो सब में इस method को यूज़ करने की बजाय आप दूसरी approach यूज़ कर सकते है।

आगे बढ़ने से try और catch block के बारे में निचे बताया जा रहा है।

Try Block

इस block में वह java code लिखा जाता है जिससे exception generate होने की संभावना है। इसका general syntax निचे दिया जा रहा है।

try
{
     //code that may generate exception
}

Catch Block

इस block में वह code लिखा जाता है जो आप exception आने पर execute करवाना चाहते है। उदाहरण के लिए आप कोई message print कर सकते है। इस block में exception type का object argument के रूप में pass किया जाता है।

catch(Exception e)
{
     //Code that will be executed on exception's occurrence
}

JSP page में try catch block द्वारा exception handling को निचे complete उदाहरण द्वारा समझाया जा रहा है।

<html>
<head>
<title>Try-catch Demo</title>
</head>

<body>

<h1> This is JSP exception handling Try-catch method demo</h1>

<%

try
{
    int num=5;
    int x = 0;
    int result;
    result = num/x;
    out.println("Num divided by X is :"+result);
}
catch(Exception e)
{
    out.println("Exception was occurred : "+e.getMessage());
}

%>

</body>
</html>

Using Exception Page

आप exception page create करके भी JSP में exceptions को handle कर सकते है। इस approach में एक JSP page होता है जिसे error page या exception page कहा जाता है। जब भी आपके JSP page में exception आती है तो ये page call किया जाता है और इस page का content user को show होता है। ये approach page level होती है।

किसी भी page को error page या exception page बनाने के लिए आप page directive के साथ isErrorPage attribute यूज़ करते है। isErrorPage को true set करने से JSP engine identify कर पाता है की ये एक error page है। इसका general syntax निचे दिया जा रहा है।

<%@ page isErrorPage="true" %>

किसी JSP page में exception आने पर किस error page को execute किया जायेगा ये भी आप page directive के द्वारा ही define करते है। लेकिन इसके लिये आप errorPage attribute यूज़ करते है। इस attribute में आप exception page या error page का URL देते है। इसका general syntax निचे दिया जा रहा है।

<%@ page errorPage="URL" %>

इस approach में वह page जिससे exception generate हो सकती है उसमें page directive के साथ errorPage attribute यूज़ करते हुए आप error page define करते है। और जो page exception handle करेगा उसमे आप page directive को isErrorPage attribute के साथ define करते है। इस page में isErrorPage attribute को true set किया जाता है। आइये अब इस approach को एक उदाहरण के माध्यम से समझने का प्रयास करते है।

MainPage.jsp:

<%@ page errorPage="ExceptionPage.jsp" %>

<html>
<head>
<title>Exception Page Demo</title>
</head>

<body>

<%
int num=5;
int x=0;
int result;

result = num/x;

out.println("Result is:"+result);

%>

</body>
</html>

ExceptionPage.jsp:

<%@ page isErrorPage="true" %>

<html>
<head>
<title>Exception Page </title>
</head>

<body>

<h1>An Exception Occured ! </h1>

</body>
</html>

Using Deployment Descriptor (web.xml file)

यदि आप चाहे तो अपनी web application के सभी JSP pages की exception एक साथ handle कर सकते है। इसे application level exception handling कहते है। इसके लिए आप अपनी web application की web.xml को configure करते है जिसे deployment descriptor भी कहते है।

Deployment descriptor के द्वारा exceptions को handle करने के लिए आप 3 tags इस्तेमाल करते है।

  1. <error-page> - Deployment descriptor के द्वारा exceptions handle करने के लिए ये tag सभी dusre tags के लिए parent tag होता है।
  2. <exception-type> - इस tag के द्वारा आप exception का type define करते है। यदि आप exception type java.lang.Exception देते है तो यह सभी प्रकार की exceptions को handle करता है।
  3. <location> - इस tag के द्वारा उस page का URL define किया जाता है जिसे आप exception आने पर execute करना चाहते है।

इस approach का general syntax निचे दिया जा रहा है।

<error-page>
<exception-type>Name of Exception</exception-type>
<location>URL of error page</location>
</error-page>

आइये अब इस approach को एक उदाहरण के माध्यम से समझने का प्रयास करते है।

AnyJSPPage.jsp:

<html>
<head>
<title>Web.xml file demo</title>
</head>

<body>

<%

int num=5;
int x=0;
int result;

result = num/x; //Will generate divide by zero exception

out.println("Result is "+result);

%>

</body>
</html>

ExceptionPage.jsp:

<html>
<head>
<title>Exception Page</title>
</head>

<body>

<h1>An Exception Occurred!</h1>

</body>
</html>

web.xml file:

<web-app>

<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>ExceptionPage.jsp</location>
</error-page>

</web-app>

जब आप ऊपर दिए गए example की तरह web.xml file को configure करते है तो आपकी web application के किसी भी page में exception आने पर उसे location tag में define किये URL पर forward कर दिया जाता है।