how handle arrayindexoutofboundsexception java
यह ट्यूटोरियल जावा एरेस द्वारा दिए गए एक महत्वपूर्ण अपवाद के बारे में एक विस्तृत व्याख्या प्रदान करता है अर्थात् सरल उदाहरणों के साथ ArrayIndexOutOfBoundsException:
हमने अपने पिछले ट्यूटोरियल में Arrays के बारे में सीखा है। एरे प्रकृति में स्थिर हैं और इसका आयाम या आकार उनकी घोषणा के समय निर्धारित किया जाता है। हम यह भी जानते हैं कि यह आकार या सरणी के लिए घोषित तत्वों की संख्या निश्चित है और 0 से गिने जाते हैं।
कभी-कभी, प्रोग्राम लॉजिक ऐसा होता है कि प्रोग्राम गैर-मौजूदा इंडेक्स से तत्व को एक्सेस करने की कोशिश करता है। उदाहरण के लिए, एक कार्यक्रम में glitches के कारण, एक प्रोग्राम 11 तक पहुंचने की कोशिश कर सकता हैवें10 तत्वों की सरणी में तत्व। इससे असामान्य स्थिति उत्पन्न होती है।
=> शुरुआती के लिए पूरा जावा प्रशिक्षण देखें
मर्ज सॉर्ट c ++ उदाहरण
जावा। Java.lang ’पैकेज में एक अपवाद प्रदान करता है जिसे गैर-मौजूदा सरणी इंडेक्स तक पहुँचने पर फेंक दिया जाता है। इसे 'ArrayIndexOutOfBoundsException' के रूप में जाना जाता है।
आप क्या सीखेंगे:
सीमा अपवाद के बाहर सरणी सूचकांक
जैसा कि पहले ही कहा जा चुका है, जब आप निर्दिष्ट लंबाई या नकारात्मक सूचकांक से परे सरणी तत्वों का उपयोग करने का प्रयास करते हैं, तो कंपाइलर 'ArrayIndexOutOfBoundsException' को फेंक देता है।
ArrayIndexOutOfBoundsException izable अनुक्रमिक ’इंटरफ़ेस लागू करता है और f indexOutOfBoundsException’ से व्युत्पन्न होता है, जो बदले में RuntimeException वर्ग से लिया जाता है, जो ‘अपवाद’ वर्ग का एक उपवर्ग है। ये सभी वर्ग ava java.lang ’पैकेज के हैं।
ArrayIndexOutOfBoundsException एक रनटाइम है, अनियंत्रित अपवाद है और इस तरह एक विधि से स्पष्ट रूप से बुलाया जाने की आवश्यकता नहीं है। निम्नलिखित ArrayIndexOutOfBoundsException का वर्ग आरेख है जो विरासत के पदानुक्रम के साथ-साथ इस अपवाद के लिए कंस्ट्रक्टर दिखाता है।
ArrayIndexOutOfBoundsException की कक्षा आरेख
जैसा कि पहले बताया गया है, ArrayIndexOutOfBoundsException क्लास में तीन सुपरक्लैसेस यानी java.lang.exception, java.lang हैं। runtimeException और java.lang.indexOutOfBoundsException।
इसके बाद, हम जावा में ArrayIndexOutOfBoundsException के कुछ उदाहरण देखेंगे।
ArrayIndexOutOfBounds अपवाद का उदाहरण
आइए पहले उदाहरण को देखें जो ArrayIndexOutOfBounds Exception को फेंका जा रहा है।
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; //for loop iterates from 0 to 5 (length of array) for(int i=0;i<=subjects.length;i++) { //when ‘i’ reaches 5, it becomes invalid index and exception will be thrown System.out.print(subjects(i) + ' '); } }
आउटपुट:
उपरोक्त कार्यक्रम में, हमारे पास 5 विषयों से मिलकर सरणी विषय हैं। हालांकि, लूप के लिए, हमने i के रूप में पुनरावृत्ति स्थिति निर्धारित की है<=subjects.length. Thus for the last iteration, the value of i is 5 which exceeds the array size. Hence, when printing array elements, the iteration i=5, results in ArrayIndexOutOfBoundsException being thrown.
नीचे दिए गए नकारात्मक सूचकांक तक पहुंचने का एक और उदाहरण है।
class Main { public static void main(String() args) { //array of integers Integer() intArray = {10,20,30,40,50}; //index = 0; accessing element is successful System.out.println('First element: ' + intArray(0)); //index = -4; accessing fails. Exception thrown System.out.println('Last element: ' + intArray(-4)); }
आउटपुट:
उपरोक्त कार्यक्रम में, हम एक प्रकार के पूर्णांक की घोषणा करते हैं और फिर व्यक्तिगत सूचकांकों का उपयोग करके तत्वों तक पहुंचते हैं। पहली अभिव्यक्ति वैध है लेकिन दूसरी अभिव्यक्ति में, हमने तत्व को इंडेक्स = -4 पर एक्सेस करने का प्रयास किया है। इसलिए दूसरी अभिव्यक्ति ArrayIndexOutOfBoundsException फेंकता है जैसा कि आउटपुट में दिखाया गया है।
ArrayIndexOutOfBoundsException से बचना
ArrayIndexOutOfBoundsException की घटना का सामान्य कारण यह है कि प्रोग्रामर सरणी सूचकांकों का उपयोग करने में गलती करता है।
इस प्रकार प्रोग्रामर ArrayIndexOutOfBoundsException की घटना से बचने के लिए नीचे दी गई तकनीकों का पालन कर सकता है।
उदाहरणों के साथ यूनिक्स में कमांड खोजें
उचित प्रारंभ और अंत सूचक का उपयोग करें
सरणी हमेशा इंडेक्स 0 से शुरू होती हैं और 1. नहीं। इसी प्रकार, एरे में अंतिम तत्व को इंडेक्स 1 एरेस्लॉन्ग्ल्टी -1 ’का उपयोग करके एक्सेस किया जा सकता है, न कि l एरेस्लोवृक्ष’। सरणी सीमा का उपयोग करते समय प्रोग्रामर को सावधान रहना चाहिए और इस प्रकार ArrayIndexOutOfBoundsException से बचें।
लूप के लिए एन्हांस्ड का उपयोग करना
लूप के लिए या प्रत्येक लूप के लिए एन्हांस की तरह सन्निहित स्मृति स्थानों पर बढ़ाता है और केवल कानूनी सूचकांकों तक पहुंचता है। इसलिए जब लूप के लिए एन्हांस किया जाता है, तो हमें गलत या गैरकानूनी सूचकांकों के एक्सेस की चिंता नहीं करनी चाहिए।
लूप के लिए एन्हांसमेंट का उपयोग करके एक सरणी पर पुनरावृति का उदाहरण।
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; System.out.println('') //define enhanced for loop to iterate over array for(String strval:subjects) { //iterates only through valid indices System.out.print(strval + ' '); } } }
आउटपुट:
हमने उपरोक्त कार्यक्रम में लूप के लिए एक संवर्द्धन का उपयोग किया है ताकि विषयों की सरणी पर पुनरावृति हो सके। ध्यान दें कि इस लूप के लिए, हमें स्पष्ट रूप से सूचकांक को निर्दिष्ट करने की आवश्यकता नहीं है। इसलिए लूप सरणी के अंत तक पुनरावृत्ति करता है जब तक कि सरणी के अंत तक नहीं पहुंच जाते।
इस प्रकार सरणी सीमाओं को निर्दिष्ट करते समय उचित सूचकांकों का उपयोग करके और देखभाल करते हुए ArrayOutOfBoundsException को ठीक करना आसान है। हम सरणियों पर पुनरावृत्ति करने के लिए लूप के लिए बढ़ाया का उपयोग भी कर सकते हैं।
आइए अपवादों में अपवादों के संबंध में अक्सर पूछे जाने वाले प्रश्नों के उत्तर दें।
बार बार पूछे जाने वाले प्रश्न
Q # 1) ArrayIndexOutOfBoundsException क्यों होता है?
उत्तर: ArrayIndexOutOfBoundsException तब होती है जब आप किसी ऐसे सरणी इंडेक्स तक पहुँचने का प्रयास करते हैं जो गैर-मौजूदा है। सूचकांक या तो ऋणात्मक है या सरणी सीमा के साथ सीमा से बाहर है।
Q # 2) NegativeArraySizeException क्या है?
उत्तर: NegativeArraySizeException एक रनटाइम अपवाद है जिसे यदि किसी सरणी को ऋणात्मक आकार के साथ परिभाषित किया गया है, तो फेंक दिया जाता है।
Q # 3) बाउंड अपवाद से बाहर क्या है?
उत्तर: बाउंड अपवाद से एक सरणी तब होती है जब कोई प्रोग्राम किसी नकारात्मक इंडेक्स या एक इंडेक्स को निर्दिष्ट करके एरे तत्व को एक्सेस करने की कोशिश करता है जो निर्दिष्ट एरे की सीमा में नहीं होता है।
Q # 4) क्या हम NullPointerException को Java में फेंक सकते हैं?
उत्तर: हां, आप NullPointerException को Java में फेंक सकते हैं या फिर JVM आपके लिए करेगा।
Q # 5) क्या NullPointerException की जाँच की गई है या अनियंत्रित है?
उत्तर: NullPointerException अनियंत्रित है और RuntimeException को बढ़ाती है। यह प्रोग्रामर को इसे संभालने के लिए कैच ब्लॉक का उपयोग करने के लिए मजबूर नहीं करता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने जावा में ArrayIndexOutOfBoundsException के विवरण पर चर्चा की। यह अपवाद आमतौर पर तब फेंका जाता है जब किसी प्रोग्राम में हम नेगेटिव इंडेक्स का उपयोग करके एरे तत्वों को एक्सेस करने की कोशिश करते हैं या किसी इंडेक्स को निर्दिष्ट करने जैसे बॉर्डर इंडेक्स से बाहर करने की कोशिश करते हैं जो निर्दिष्ट एरे की लंबाई से अधिक है।
सरणियों का उपयोग करते समय या लूप के लिए बढ़ाया का उपयोग करके सूचकांकों की देखभाल से इस अपवाद से बचा जा सकता है जो डिजाइन द्वारा केवल कानूनी सूचकांकों तक पहुंचता है।
हम अपने बाद के ट्यूटोरियल में अन्य सरणी विषयों पर आगे बढ़ेंगे।
=> यहां मुफ़्त जावा कोर्स का अन्वेषण करें।
अनुशंसित पाठ
- उदाहरणों के साथ जावा परावर्तन ट्यूटोरियल
- जावा सरणी कोड कोड के साथ लंबाई ट्यूटोरियल
- उदाहरणों के साथ जावा अपवाद और अपवाद हैंडलिंग
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा में मॉडिफायर एक्सेस करें - उदाहरणों के साथ ट्यूटोरियल
- जावा ऐरे - जावा में ऐरे के तत्वों को कैसे प्रिंट करें?
- जावा प्रोग्रामिंग भाषा का परिचय - वीडियो ट्यूटोरियल
- Java SWING Tutorial: कंटेनर, कंपोनेंट्स एंड इवेंट हैंडलिंग