Java में try और catch
खराब slots[5] रीड को try और catch में लपेटें ताकि प्रोग्राम ArrayIndexOutOfBoundsException पर खत्म न हो। catch के अंदर blocked प्रिंट करें, फिर दोनों ब्लॉकों के बाहर after प्रिंट करें। Guard.java को कंपाइल करें और java Guard चलाएँ। स्क्रीन को blocked, फिर after दिखाना चाहिए। दूसरी फ़ाइल slots[0] को try में रखती है ताकि catch छूट जाए और स्क्रीन 2, फिर after दिखाए। throw अगले पृष्ठ के लिए छोड़ें।
खराब इंडेक्स पकड़ना
exceptions पृष्ठ ने दिखाया कि {2, 4} पर slots[5] प्रिंट करने से ArrayIndexOutOfBoundsException फेंकता है और रन रुक जाता है। यह पृष्ठ वही सरणी कहानी रखता है और हैंडलिंग जोड़ता है। नई शिक्षण फ़ाइल Guard.java खोलें। सार्वजनिक क्लास नाम Guard रखें ताकि फ़ाइल नाम से मेल खाए। बिना catch रुके बचे Alarm mains, Crate की Integer सूचियाँ, और कोई भी Scanner या nextLine हटाएँ। प्रोग्राम टाइपिंग का इंतज़ार न करे।
main के अंदर वही छोटी सरणी रखें:
int[] slots = {2, 4};
खराब प्रिंट को try में रखें:
System.out.println(slots[5]);
फिर ऐसा catch लिखें जो ArrayIndexOutOfBoundsException नाम दे और blocked प्रिंट करे। पूरे try और catch के बाद after प्रिंट करें। catch पैरामीटर नाम छोटा अक्षर जैसे e हो सकता है; इस पृष्ठ पर exception ऑब्जेक्ट प्रिंट करने की ज़रूरत नहीं।
public class Guard {
public static void main(String[] args) {
int[] slots = {2, 4};
try {
System.out.println(slots[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("blocked");
}
System.out.println("after");
}
}
उस फ़ोल्डर से जहाँ Guard.java है javac Guard.java चलाएँ। जब कोष्ठक, ब्रेसेज़ और सेमीकोलन मेल खाएँ, javac अपनी कोई पंक्ति नहीं लिखता। फिर java Guard चलाएँ — java Guard.java नहीं। रन कमांड से .java अंत हटाएँ।
स्क्रीन blocked, फिर after दिखाती है। खराब इंडेक्स अभी भी try के अंदर फेंकता है। catch उस नामित exception को संभालता है और blocked प्रिंट करता है। पंक्ति System.out.println("after"); बाहर है, इसलिए भी चलती है। प्रोग्राम उस ठहराव पर नंगा खराब Alarm फ़ाइल की तरह खत्म नहीं होता।
कल्पना करें कि उसी try में slots[5] के बाद दूसरी प्रिंट अभी भी हो, जैसे rice प्रिंट करने वाली पंक्ति। वह पंक्ति नहीं चलती। exception पकड़ना वापस जाकर बाकी try पूरा नहीं करता। केवल catch बॉडी उस ठहराव के लिए चलती है, फिर नियंत्रण catch के बाद जारी रहता है। विचार साफ़ रखें: हैंडलिंग थ्रो बिंदु के बाद try के अंदर बची पंक्तियाँ छोड़ देती है।
यदि टर्मिनल कीबोर्ड इनपुट का इंतज़ार करे, तो किसी फ़ाइल में पुराने अभ्यास का nextLine कॉल अभी है। उसे हटाएँ। यदि केवल स्टैक रिपोर्ट दिखे और blocked पंक्ति न हो, तो catch गायब है या exception नाम मेल नहीं खाता। यदि केवल 2 दिखे बिना after, तो शायद अभी पुरानी सुरक्षित Alarm फ़ाइल चला रहे हैं — catch शिक्षण फ़ाइल के साथ java Guard पर जाएँ।
जब try पूरा हो, catch चुप रहता है
दूसरा प्रोग्राम वही try और catch आकार उपयोग करता है, लेकिन try के अंदर प्रिंट लिखा स्लॉट माँगता है: slots[0]। try की हर पंक्ति पूरी होती है। catch बॉडी नहीं चलती।
public class Guard {
public static void main(String[] args) {
int[] slots = {2, 4};
try {
System.out.println(slots[0]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("blocked");
}
System.out.println("after");
}
}
javac Guard.java से कंपाइल करें, फिर java Guard चलाएँ। स्क्रीन 2, फिर after दिखाती है। शब्द blocked प्रिंट नहीं होता, क्योंकि कोई ArrayIndexOutOfBoundsException नहीं था। catch चुप रहा। after पंक्ति अभी भी चलती है क्योंकि वह दोनों ब्लॉकों के बाहर है — वही जगह जो catch डेमो में थी।
विरोध एक बार चलाएँ। पहली फ़ाइल: खराब इंडेक्स, catch blocked प्रिंट करता है, फिर after। दूसरी फ़ाइल: सुरक्षित इंडेक्स, catch छूटा, स्क्रीन 2 फिर after। दोनों Guard और वही catch प्रकार नाम रखते हैं। केवल try के अंदर इंडेक्स बदलता है। वही एक बदलाव दिखाता है कि catch कब चलता है और कब नहीं।
इस पृष्ठ पर throw न गढ़ें। आप उस exception को पकड़ रहे हैं जो खराब सरणी रीड पहले से पैदा करती है। अगला पृष्ठ जानबूझकर फेंकने के बारे में है। आज कोर्स की हर शांत प्रिंट को try में भी न लपेटें — यह पाठ वहाँ try उपयोग करता है जहाँ ज्ञात खराब इंडेक्स को हैंडल्ड पथ चाहिए।
catch नाम मेल खाना चाहिए
catch खंड एक exception प्रकार नाम देता है। इस पृष्ठ पर वह प्रकार ArrayIndexOutOfBoundsException है, खराब इंडेक्स से मेल खाता। यदि slots[5] के चारों ओर catch (NullPointerException e) लिखें, तो वह catch ठहराव नहीं संभालेगा। प्रोग्राम अभी भी ArrayIndexOutOfBoundsException से खत्म होगा, और उस बेमेल catch के लिए न blocked न after प्रिंट होंगे। शिक्षण फ़ाइलों में मेल खाने वाला प्रकार रखें।
Java में अन्य exception नाम हैं। यह पृष्ठ एक स्पष्ट जोड़ी पर रहता है: खराब सरणी इंडेक्स और ArrayIndexOutOfBoundsException। इस आकार का अभ्यास करने से पहले हर पकड़ने योग्य प्रकार की सूची की ज़रूरत नहीं। exceptions पृष्ठ पर देखा नाम मिलाएँ।
नंगे Alarm ठहराव से तुलना
exceptions पृष्ठ पर java Alarm slots[5] के साथ रुका और स्टैक रिपोर्ट दिखाई। इस पृष्ठ पर उसी खराब इंडेक्स के साथ java Guard blocked प्रिंट करता है और after तक जारी रहता है। सरणी कहानी नहीं बदली। हैंडलिंग बदली। यदि Alarm फ़ाइलें अभी पास हों तो केवल इतिहास के रूप में रखें; catch डेमो के लिए java Guard चलाएँ ताकि स्क्रीन इस पाठ से मेल खाए।
wrappers इतिहास पुरानी फ़ाइल रखने पर Integer सूची से अभी भी 9 प्रिंट करता है। वह पथ catch कहानी नहीं। Guard.java के अंदर बची ArrayList<Integer> डेमो हटाएँ या नज़रअंदाज़ करें ताकि शिक्षण फ़ाइल int[] slots के साथ try और catch पर रहे।
यह पृष्ठ throwing के लिए क्या छोड़ता है
यह पृष्ठ उस exception को पकड़ता है जिससे एक पंक्ति पहले से टकराती है। अगला पृष्ठ throw पेश करता है ताकि आप स्वयं समस्या संकेत कर सकें। यहाँ मेल खाते catch और after के जारी रहने पर रहें। इन Guard फ़ाइलों पर अभी मैन्युअल throw ज़रूरत के रूप में न जोड़ें।
throwing से पहले
आप slots[5] से ArrayIndexOutOfBoundsException पकड़ सकते हैं और blocked, फिर after देख सकते हैं। आप slots[0] को try में रख सकते हैं और catch छूटने के साथ 2, फिर after देख सकते हैं। Guard.java कंपाइल करें और प्रत्येक रखी डेमो के लिए बारी-बारी java Guard चलाएँ। catch नाम खराब-इंडेक्स ठहराव से मिला। अगला पृष्ठ throwing है, जहाँ आप जानबूझकर ठहराव पैदा करते हैं।
हैंडल्ड पथ के लिए catch डेमो रखें। catch के शांत छोड़ने के लिए सुरक्षित try रखें। मैन्युअल throw को इस पृष्ठ से दूर रखें। ये तीन आदतें आगे बढ़ने से पहले चौकी हैं। जब java Guard के खराब इंडेक्स रन के बाद पहले blocked फिर after दिखें, try और catch ने इस पाठ का काम पूरा कर लिया और आप throwing वाले अगले विषय के लिए तैयार हैं।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी