एक्सेप्शन संभालना (Try, Catch Statements)

वह कोड जिसमें कि रन टाईम एरर आ सकती है उसे try ब्लाॅक में लिखा जाता है तथा try ब्लाॅक द्वारा throw किए गए एक्सेप्शन को catch ब्लाॅक द्वारा संभाला जाता है।

class Demo
{
  public static void main(String arr[])
  {
	try
	{
		statement 1;
		statement 2;
		. . . . . . .
		statement n;
	}
	catch(ExceptionName objectName)
	{
		statement 1;
		statement 2;
		. . . . . . .
		statement n;
	}
  }
}

नीचे दिए गए उदाहरण में try ब्लाॅक में शून्य से विभाजित होने के कारण एक एक्सेप्शन उत्पन्न होगा। जिसे catch ब्लाॅक में ।ArithmeticException द्वारा संभाला गया है। चूंकि उत्पन्न होने वाला एक्सेप्शन गणित से संबंधित हैं, अतः इसे संभालने के लिए हमने ।ArithmeticException क्लास का प्रयोग किया है। इससे जैसे ही संख्या को शून्य से विभाजित किया जाएगा, वैसे ही Division by zero संदेश स्क्रीन पर प्रदर्शित हो जाएगा।

class Exep
{
  public static void main(String arr[])
  {
    int a = 10;
    int b = 5;
    int c = 5;
    int x, y;
    try
    {
      x = a / (b - c);
      System.out.println(x);
    }
    catch(ArithmeticException e)
    {
      System.out.println("Division by zero");
    }
  }
}

Output:

Division by zero

एक से ज़्यादा कैच स्टेटमेंट

हमारे प्रोग्राम में ऐसा भी संभव है कि एक से अधिक प्रकार के एक्सेप्शन उत्पन्न हो। ऐसी स्थिति में उन्हें संभालने के लिए हम एक से अधिक catch ब्लाॅक का प्रयोग कर सकते हैं। इसे हम निम्न उदाहरण के माध्यम से समझ सकते हैं।

नीचे दिए गए उदाहरण में try ब्लाॅक में हमने x = a[1] / (b - a[i]) स्टेटमेंट प्रयोग किया है। इस स्टेटमेंट में i का मान 2 होने की वजह से ArrayIndexOutOfBoundsException उत्पन्न होगा। वहीं, यदि इसी प्रोग्राम में हम i का मान 0 लेते हैं तो ArithmeticException उत्पन्न होगा।

class Exep
{
  public static void main(String arr[])
  {
    int a[] = {5, 10};
    int b = 5;
    int x;
    int i = 2;
    try
    {
      x = a[1] / (b - a[i]);
      System.out.println(x);
    }
    catch(ArithmeticException e)
    {
      System.out.println("Division by zero");
    }
    catch(ArrayIndexOutOfBoundsException e)
    {
      System.out.println("Invalid index");
    }
  }
}

Output:

Invalid index

किसी भी प्रकार के एक्सेप्शन को संभालना

माना कि एक प्रोग्राम में हमने कुछ तरह के एक्सेप्शन को संभालने के लिए तो catch ब्लाॅक बना रखे हैं। किंतु कभी ऐसा भी हो सकता है कि रन टाइम पर नए तरह का एक्सेप्शन जनरेट हो जाए। इस नए प्रकार के एक्सेप्शन को संभालने के लिए catch ब्लाॅक में Exception क्लास का प्रयोग किया जाता है।

अर्थात किसी नए एक्सेप्शन के उत्पन्न होने की संभावना हो तो अंतिम catch ब्लाॅक में Exception क्लास की सहायता से उसे संभाला जा सकता है।

class Demo
{
	public static void main(String arr[])
	{
		int a[] = {5, 10};
		int x, b = 5, i = 2;
		try
		{
			x = a[1] / (b - a[i]);
			System.out.println(x);
		}
		catch(ArithmeticException e)
		{
			System.out.println("Arithmetic error");	
		}
		catch(Exception e)
		{
			System.out.println(e);	
		}
	}
}

Output:

java.lang.ArrayIndexOutOfBoundsException
सुझाव / कमेंट