मल्टी-कैच कैसे काम करता है - 1

"कुछ और दिलचस्प पाठ। ओह, मुझे पढ़ाना कितना पसंद है!"

"मैं आपको बताना चाहता हूं कि कितने कैच ब्लॉक काम करते हैं। यह बहुत आसान है: जब एक ट्राई ब्लॉक में अपवाद होते हैं, तो निष्पादन पहले कैच ब्लॉक में चला जाता है।"

"यदि कैच ब्लॉक के कोष्ठकों में इंगित प्रकार फेंके गए अपवाद के प्रकार से मेल खाता है, तो उस ब्लॉक के अंदर निष्पादन शुरू हो जाता है। अन्यथा, हम अगले कैच ब्लॉक पर चले जाते हैं, जहां वही चेक किया जाता है।"

"अगर हम कैच ब्लॉक से बाहर निकलते हैं और अपवाद नहीं पकड़ा गया है, तो इसे फिर से हटा दिया जाएगा, और वर्तमान पद्धति असामान्य रूप से समाप्त हो जाएगी।"

"मैं देख रहा हूँ। कैच ब्लॉक जो अपवाद प्रकार के साथ मेल खाता है, वह निष्पादित होगा।"

"हाँ, ठीक है। हालाँकि, वास्तव में यह थोड़ा अधिक जटिल है। कक्षाएं अन्य वर्गों को विरासत में दे सकती हैं। यदि एक गाय वर्ग को एक पशु वर्ग विरासत में मिला है, तो गाय वस्तु को न केवल गाय चर द्वारा संदर्भित किया जा सकता है, बल्कि पशु चर द्वारा भी संदर्भित किया जा सकता है। "

"और?"

"क्योंकि सभी अपवाद अपवाद या रनटाइम अपवाद (जो अपवाद को भी प्राप्त करते हैं ) को प्राप्त करते हैं, उन्हें अभी भी 'कैच ( अपवाद ई)' या ' कैच (रनटाइम अपवाद ई) ' का उपयोग करके पकड़ा जा सकता है।"

"और?"

"हम दो निष्कर्ष निकाल सकते हैं। सबसे पहले, आप किसी भी अपवाद को पकड़ने के लिए 'कैच (अपवाद ई)' का उपयोग कर सकते हैं। दूसरा, ब्लॉक को पकड़ने का क्रम मायने रखता है। "

"यहां कुछ उदाहरण दिए गए हैं:"

" ArithmeticExceptionजो 0 से विभाजित होने के बाद होता है वह दूसरे कैच ब्लॉक में पकड़ा जाएगा।"

कोड
try
{
    System.out.println("Before calling method1.");
    int a = 1 / 0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Division by zero. Exception has been caught.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}

"नीचे दिए गए उदाहरण में, ArithmeticExceptionपहले कैच ब्लॉक में पकड़ा जाएगा, क्योंकि सभी अपवादों को अपवाद प्राप्त होता है, यानी Exceptionसभी अपवादों को शामिल करता है। "

कोड
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Divided by zero. Exception has been caught.");
}

"नीचे दिए गए उदाहरण में, ArithmeticExceptionपकड़ा नहीं जाएगा। इसे कॉलिंग विधि में वापस लाया जाएगा।"

कोड
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}

"इससे चीजें थोड़ी साफ हो गईं। ये अपवाद सबसे आसान विषय नहीं हैं।"

"यह केवल ऐसा लगता है। वे वास्तव में जावा में सबसे सरल चीजों में से एक हैं।"

"मुझे नहीं पता कि इस पर खुश होना है या दुखी ..."