मल्टी-कॅच कसे कार्य करते - 1

"आणखी काही मनोरंजक धडे. अरे, मला शिकवायला किती आवडते!"

"मल्टिपल कॅच ब्लॉक्स कसे कार्य करतात याबद्दल मी तुम्हाला सांगू इच्छितो . हे अगदी सोपे आहे: जेव्हा ट्राय ब्लॉकमध्ये अपवाद आढळतात, तेव्हा अंमलबजावणी पहिल्या कॅच ब्लॉकवर जाते."

"कॅच ब्लॉकच्या कंसात सूचित केलेला प्रकार फेकलेल्या अपवादाच्या प्रकाराशी जुळत असल्यास, त्या ब्लॉकमध्ये अंमलबजावणी सुरू होते. अन्यथा, आम्ही पुढील कॅच ब्लॉकवर जाऊ, जिथे समान तपासणी केली जाते."

"आमच्याकडे कॅच ब्लॉक्स संपले आणि अपवाद पकडला गेला नाही, तर ते पुन्हा फेकले जाईल आणि सध्याची पद्धत असामान्यपणे संपुष्टात येईल."

"मी पाहतो. अपवाद प्रकाराशी एकरूप होणारा कॅच ब्लॉक निष्पादित केला जाईल."

"होय, बरोबर. तथापि, प्रत्यक्षात ते थोडे अधिक क्लिष्ट आहे. वर्ग इतर वर्गांना वारसा देऊ शकतात. जर गाय वर्गाला प्राणी वर्गाचा वारसा मिळाला, तर गाय ऑब्जेक्टचा संदर्भ केवळ गाय व्हेरिएबलद्वारेच नाही तर अॅनिमल व्हेरिएबलद्वारे देखील केला जाऊ शकतो. "

"आणि?"

"कारण सर्व अपवाद अपवाद किंवा RuntimeException (ज्याला अपवाद देखील वारसा मिळतात ), ते अजूनही 'catch ( exception e)' किंवा ' catch (RuntimeException e) ' वापरून पकडले जाऊ शकतात."

"आणि?"

"आम्ही दोन निष्कर्ष काढू शकतो. पहिला, तुम्ही कोणताही अपवाद पकडण्यासाठी 'कॅच (अपवाद ई)' वापरू शकता. दुसरे, कॅच ब्लॉक्सचा क्रम महत्त्वाचा आहे. "

"येथे काही उदाहरणे आहेत:"

" 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.");
}

"त्यामुळे गोष्टी थोड्या क्लिअर झाल्या. हे अपवाद हा सर्वात सोपा विषय नाही."

"हे फक्त तसे दिसते. ते जावामधील सर्वात सोप्या गोष्टींपैकी एक आहेत."

"मला माहित नाही की त्याबद्दल आनंदी व्हावे की दुःखी ..."