Java में एक्सेप्शन
एक छोटा int ऐरे slots रखें जिसमें 2 और 4 हों। slots[0] प्रिंट करें ताकि स्क्रीन 2 दिखाए। फिर सीखें कि अगर आप उसके बजाय slots[5] माँगें तो क्या होता है: Java ArrayIndexOutOfBoundsException फेंकता है और प्रोग्राम रुक जाता है। पहले सुरक्षित फ़ाइल के लिए Alarm.java कंपाइल करें और java Alarm चलाएँ। टूटे नियम से रन-टाइम रुकना देखना — गायब सेमीकोलन से नहीं — यही इस पृष्ठ का पाठ है। try और catch अगले पृष्ठ के लिए छोड़ दें।
सुरक्षित रीड जो पूरा होता है
एक्सेप्शन Java का तरीका है कहने का कि प्रोग्राम चलते समय कोई नियम टूटा। अब तक ज़्यादातर डेमो एक साफ़ पंक्ति प्रिंट करके चुपचाप खत्म होते थे। यह पृष्ठ पहले एक शांत डेमो रखता है, फिर एक डेमो जो एक्सेप्शन नाम के साथ रुकता है।
Alarm.java खोलें। पब्लिक क्लास नाम Alarm रखें ताकि फ़ाइल नाम से मेल खाए। बचा हुआ ArrayList<Integer>, nums.add(9), Crate डेमो और oak व pine पर कोई भी for-each हटा दें। कोई Scanner या nextLine भी हटा दें। प्रोग्राम टाइपिंग का इंतज़ार न करे। इस पृष्ठ को import पंक्ति की ज़रूरत नहीं।
main के अंदर दो पूर्ण संख्याएँ रखें:
int[] slots = {2, 4};
फिर पहला स्लॉट प्रिंट करें:
System.out.println(slots[0]);
स्लॉट संख्याएँ शून्य से शुरू होती हैं। स्लॉट शून्य में 2 है। कंपाइल से पहले सेव करें।
public class Alarm {
public static void main(String[] args) {
int[] slots = {2, 4};
System.out.println(slots[0]);
}
}
जिस फ़ोल्डर में Alarm.java है वहाँ से javac Alarm.java चलाएँ। जब कोष्ठक, ब्रेसेस और सेमीकोलन मेल खाते हैं, javac अपनी कोई पंक्ति नहीं लिखता। फिर java Alarm चलाएँ — java Alarm.java नहीं। रन कमांड से .java अंत हटा दें।
प्रोग्राम एक पंक्ति प्रिंट करके रुके: 2। वह आपसे टाइप न माँगे। अगर टर्मिनल कीबोर्ड इनपुट का इंतज़ार करे, तो पुराने अभ्यास का nextLine कॉल अभी किसी फ़ाइल में है। वह कॉल हटाएँ और ऐरे के साथ System.out.println(slots[0]); रखें।
एक बार रन चलाकर देखें। Java Alarm.main से शुरू होता है। ऐरे में दो मान हैं। प्रिंट स्लॉट शून्य पढ़ता है। स्क्रीन 2 दिखाती है। और कुछ प्रिंट नहीं होना चाहिए। अगर 9 दिखे तो अभी Crate का wrappers डेमो चल रहा है — java Alarm पर जाएँ। अगर 4 दिखे तो आपने slots[1] प्रिंट किया; सुरक्षित शिक्षण फ़ाइल slots[0] रखती है।
बुरा इंडेक्स जो फेंकता है
सिर्फ़ प्रिंट पंक्ति बदलें ताकि वह ऐसा स्लॉट माँगे जो कभी लिखा ही नहीं: slots[5]। ऐरे में अभी भी सिर्फ़ दो स्लॉट हैं। रन टाइम पर Java संख्या प्रिंट करने की जगह एक्सेप्शन फेंकता है।
public class Alarm {
public static void main(String[] args) {
int[] slots = {2, 4};
System.out.println(slots[5]);
}
}
javac Alarm.java से कंपाइल करें, फिर java Alarm चलाएँ। इस बार प्रोग्राम 2 नहीं प्रिंट करता। टर्मिनल एक त्रुटि रिपोर्ट दिखाता है जिसमें ArrayIndexOutOfBoundsException नाम है। रन रुक जाता है। उस प्रिंट के बाद जो पंक्तियाँ आपने सोची थीं वे नहीं चलतीं, क्योंकि एक्सेप्शन पहले ही प्रोग्राम रोक चुका है। ध्यान दें कि javac अभी भी सफल हो सकता है — बुरा इंडेक्स रन-टाइम समस्या है, गायब सेमीकोलन नहीं।
वही रुकना पाठ है। आप इस पृष्ठ पर try से इंडेक्स ठीक नहीं कर रहे। आप पहचानना सीख रहे हैं कि रन टाइम पर टूटा नियम एक्सेप्शन बनता है और सामान्य रास्ता खत्म करता है। रिपोर्ट में एक्सेप्शन नाम पढ़ें। बुरा-इंडेक्स फ़ाइल सिर्फ़ वह रुकना देखने के लिए रखें। जब शांत स्क्रीन पर 2 चाहिए तो सुरक्षित फ़ाइल चुनें। अगर बुरे इंडेक्स को वापस slots[0] कर दें तो शांत स्क्रीन लौटती है; इससे साबित होता है रुकना इंडेक्स से आया, क्लास नाम Alarm से नहीं।
स्टैक रिपोर्ट को सामान्य println परिणाम न समझें। Java बता रहा है क्या गलत हुआ। एक्सेप्शन प्रकार की वर्तनी मायने रखती है जब आप उसके बारे में बात करें: ArrayIndexOutOfBoundsException। सिर्फ़ «त्रुटि» कहना इस पाठ के लिए अस्पष्ट है — रुकने का वर्णन करते समय पूरा प्रकार नाम रखें।
Wrappers बचा हुआ यह क्रैश नहीं
तीसरी फ़ाइल पिछले पृष्ठ की Integer सूची याद दिलाती है। वह डेमो 9 प्रिंट करके खत्म होता है। यह एक्सेप्शन की कहानी नहीं है।
import java.util.ArrayList;
public class Alarm {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
System.out.println(nums.get(0));
}
}
वह कंट्रास्ट 9 प्रिंट करता है और बिना फेंके खत्म होता है। इसे सिर्फ़ पूरा wrappers पथ और बुरे-इंडेक्स Alarm पथ अलग करने के लिए उपयोग करें। इस एक्सेप्शन पाठ के लिए शिक्षण जोड़ी सुरक्षित slots[0] प्रिंट और फेंकने वाला slots[5] प्रिंट है। इस पृष्ठ पर किसी भी ऐरे डेमो के चारों ओर try या catch बिल्कुल न बनाएँ।
ऐरे और wrappers से तुलना
ऐरे पृष्ठ पर आप लिखे स्लॉट के अंदर रहे। यह पृष्ठ जानबूझकर बाहर जाता है ताकि आप एक्सेप्शन देखें। wrappers पृष्ठ पर Integer सूची बिना क्रैश 9 प्रिंट करती थी। वह इतिहास के रूप में अभी भी सही है। इस पृष्ठ के लिए Alarm और ऐरे इंडेक्स कहानी रखें।
अन्य एक्सेप्शन भी हैं — उदाहरण के लिए शून्य से भाग ArithmeticException फेंक सकता है। यह पृष्ठ एक साफ़ नाम रखता है: बुरे इंडेक्स से ArrayIndexOutOfBoundsException। आज हर एक्सेप्शन प्रकार की सूची की ज़रूरत नहीं। अगला पृष्ठ हैंडलिंग सिखाने से पहले एक मज़बूत उदाहरण काफ़ी है।
जब पुरानी Crate.java फ़ाइलें पास हों, उन्हें छोड़ दें या सिर्फ़ तब हटाएँ जब वे भ्रमित करें कि आप कौन सी क्लास चला रहे हैं। जिस डेमो का मतलब है उसकी फ़ाइल कंपाइल के बाद java Alarm चलाएँ। जानबूझकर फ़ाइल बदलें ताकि अध्ययन के दौरान सुरक्षित प्रिंट और फेंकने वाला प्रिंट एक ही main में न मिल जाएँ।
try और catch के लिए क्या बचता है
यह पृष्ठ दिखाता है कि एक्सेप्शन प्रोग्राम को रन टाइम पर रोक सकता है। अगला पृष्ठ try और catch पेश करता है ताकि कुछ समस्याएँ पूरे रन खत्म किए बिना हैंडल हों। यहाँ रुकने और एक्सेप्शन नाम को पहचानने पर रहें। इस पृष्ठ पर अभी catch ब्लॉक को ज़रूरी न बनाएँ।
try और catch से पहले
आप {2, 4} से slots[0] प्रिंट कर 2 देख सकते हैं। आप slots[5] प्रिंट कर ArrayIndexOutOfBoundsException के साथ रन रुकता देख सकते हैं। हर रखे डेमो के लिए बारी-बारी Alarm.java कंपाइल करें और java Alarm चलाएँ। एक्सेप्शन ने टूटे नियम को साफ़ नाम दिया। अगला पृष्ठ try और catch है, जहाँ हैंडल किया पथ कुछ त्रुटियों के बाद जारी रह सकता है।
शांत स्क्रीन के लिए सुरक्षित डेमो रखें। रुकना देखने के लिए बुरा इंडेक्स रखें। इस पृष्ठ से try दूर रखें। ये तीन आदतें आगे बढ़ने से पहले चेकपॉइंट हैं। जब java Alarm के बुरे-इंडेक्स रन के बाद आप ArrayIndexOutOfBoundsException नाम बता सकें, एक्सेप्शन ने इस पाठ का काम कर दिया और आप हैंडलिंग वाले अगले विषय के लिए तैयार हैं।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी