Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

java.lang.NullPointerException त्रुटि कैसे हल करें

यदि आपने Java-आधारित एप्लिकेशन्स पर काम किया है तो आपने NullPointerException नामक कुछ देखा होगा। Null Pointer Exception Java एप्लिकेशन डेवलपमेंट में सबसे आम त्रुटियों में से एक है। यह अपवाद आमतौर पर मानवीय त्रुटि का परिणाम होता है, लेकिन इस तरह की त्रुटियों को डीबग करने में समय बर्बाद हो सकता है। यह मुद्दा पूरी तरह से सिंटैक्टिकल त्रुटि नहीं है, इसलिए कई बार समस्या की पहचान करना मुश्किल हो सकता है।

इस लेख में, हम देखते हैं कि java.lang.NullPointerException क्या है, यह क्यों होता है, आप इसे कैसे ठीक कर सकते हैं, और जंगली नल पॉइंटर्स में चलने से बचने के लिए कुछ सर्वोत्तम प्रथाएं। बिना किसी देरी के, आइए शुरू करें।

java.lang.NullPointerException क्या है?

Null Pointer Exception Java भाषा द्वारा समर्थित कई Exceptions में से एक है। यह इंगित करता है कि एक रेफरेंस वेरिएबल को एक्सेस करने का प्रयास किया गया है जो वर्तमान में null की ओर इशारा करता है।

Null Java में डिफ़ॉल्ट मान है जिसे उन वेरिएबल्स को असाइन किया जाता है जिन्हें यूजर द्वारा घोषणा के बाद या साथ में इनिशियलाइज़ नहीं किया गया है। निम्न उदाहरण पर विचार करें जहां आप इस तरह वेरिएबल घोषित करते हैं:

String str;

और फिर वेरिएबल की सामग्री प्रिंट करने का प्रयास करते हैं:

System.out.println(str); // => null

जैसा कि ऊपर देखा जा सकता है, आउटपुट पर 'null' प्रिंट होता है। यह दर्शाता है कि चूंकि वेरिएबल str अनइनिशियलाइज़्ड है, यह वर्तमान में null की ओर इशारा करता है, या मान null रखता है। null की ओर इशारा करने वाले वेरिएबल की समस्या यह है कि वेरिएबल केवल एक रेफरेंस है, और यह किसी चीज़ की ओर इशारा नहीं करता। यदि आप null की ओर इशारा करने वाले वेरिएबल में स्टोर डेटा पर कुछ ऑपरेशन करने का प्रयास करते हैं, तो सिस्टम को पता नहीं चलेगा कि क्या करना है। ऐसा इसलिए होता है क्योंकि वेरिएबल में वास्तव में कोई डेटा स्टोर नहीं होता; यह एक शून्य इकाई की ओर इशारा करता है।

java.lang.NullPointer.Exception का उदाहरण

java.lang.NullPointerException के उदाहरण ढूंढना मुश्किल काम नहीं है, क्योंकि आपको बस वेरिएबल को एक्सेस करने से पहले इनिशियलाइज़ नहीं करना है। उदाहरण के लिए, आइए StringBuilder क्लास पर विचार करें। StringBuilder एक क्लास है जिसका उपयोग स्ट्रिंग्स के निर्माण और मैनिपुलेशन को संभालने के लिए किया जाता है। यहां बताया गया है कि आप सामान्य रूप से स्ट्रिंग्स बनाने के लिए क्लास का उपयोग कैसे करेंगे:

import java.util.StringBuilder; public class Test { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("Hello "); sb.append("World!"); String result = sb.toString(); System.out.println(result); // => Hello World! } }

यदि आप उपरोक्त स्निपेट चलाते हैं, तो यह ठीक काम करेगा। आइए इसके संशोधित संस्करण पर नज़र डालें जो null pointer exception फेंकेगा:

import java.util.StringBuilder; public class Test { public static void main(String[] args) { StringBuilder sb; sb.append("Hello "); sb.append("World!"); String result = sb.toString(); System.out.println(result); } }

जैसा कि आप देख सकते हैं, हमने इसे घोषित करते समय StringBuilder क्लास का इंस्टेंस इनिशियलाइज़ नहीं किया। जब sb.append() लाइन्स एक्जीक्यूट होती हैं, तो sb वास्तव में किसी ऑब्जेक्ट की ओर इशारा नहीं करता, बल्कि यह null की ओर इशारा करता है। यहीं पर NullPointerException फेंका जाता है। अपवाद फेंके जाने के कारण, JVM इसके बाद के किसी भी स्टेटमेंट को एक्जीक्यूट नहीं कर सकता।

java.lang.NullPointerException त्रुटि कैसे ठीक करें

Null Pointer Exception बनाना आसान है, लेकिन इससे बचना या ठीक करना मुश्किल है। जबकि कुछ इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट्स (IDEs) आपको चेतावनी देते हैं यदि आप किसी वेरिएबल को कुछ संगत मान के साथ इनिशियलाइज़ किए बिना एक्सेस कर रहे हैं, अधिकांश IDEs जटिल स्थितियों में इसका पता नहीं लगा सकते, जैसे वेरिएबल को कई मेथड कॉल्स के माध्यम से पास करना। Null Pointer Exception का सटीक समाधान आपकी स्थिति और कोड पर निर्भर करता है। यहां सामान्य Null Pointer परिदृश्यों को ठीक करने के कुछ शीर्ष तरीके दिए गए हैं:

मैन्युअल त्रुटियों के लिए अपने कोड की जांच करें

Null Pointer Exceptions होने का सबसे बड़ा कारण मानवीय त्रुटि है। सुनिश्चित करें कि आपके द्वारा लिखा गया प्रोग्राम उस सही लॉजिक को वहन करता है जो आपने शुरू में इरादा किया था। साथ ही, सोर्स कोड के माध्यम से अपनी आंखें चलाएं ताकि जांच सकें कि क्या आपने कोई स्टेटमेंट मिस किया है, या किसी वेरिएबल को गलत लिखा है जिसके कारण कुछ वेरिएबल को मान असाइन नहीं किया गया हो।

सुनिश्चित करें कि आपने अपना कोड उसी तरह लिखा है जैसा आपका लॉजिक आपको निर्देशित करता है, और आपने कोई स्टेटमेंट लिखना मिस नहीं किया है, या ऑब्जेक्ट्स को गलत रेफरेंसेज को असाइन नहीं किया है। एक नियम के रूप में, जांचें कि किसी भी वेरिएबल का उपयोग करने से पहले, इसे ऑब्जेक्ट के साथ इनिशियलाइज़ किया गया है।

Null Pointer Exception का कारण बन सकने वाले कोड के चारों ओर सेफ्टी चेक लगाएं

यदि आप कोड की उस लाइन को जानते हैं जो आपका NullPointer पैदा कर रही है और मानते हैं कि आपका लॉजिक भी सही है, तो आप कोड के उस सेक्शन को try-catch ब्लॉक में लपेट सकते हैं, और जब Null Pointer पकड़ा जाए तो व्यवहार को परिभाषित कर सकते हैं। ऐसा सेटअप इस तरह दिखेगा:

... // Some code above try { // Put the exception-prone code here } catch (NullPointerException npe) { // Define what needs to be done when an NPE is caught } // Some code below ...

यह उन स्थितियों में होता है जहां एक निश्चित रेफरेंस वेरिएबल में null हो भी सकता है और नहीं भी। अक्सर, रिमोट API प्रतिक्रियाएं, डिवाइस इंटरफेस प्रतिक्रियाएं इस परिदृश्य के लिए प्रवण होती हैं। परिणाम या हार्डवेयर की उपलब्धता के आधार पर, रिस्पॉन्स वेरिएबल इंस्टेंशिएटेड ऑब्जेक्ट की ओर इशारा कर भी सकता है और नहीं भी। सेफ्टी चेक्स का उपयोग इन स्थितियों को संभालने के लिए सबसे उपयुक्त है।

कुछ एक्सेस करने से पहले Null की जांच करें

यह मेथड try-catch मेथड के समान है। इस मेथड में, वेरिएबल को एक्सेस करने से पहले null मानों की जांच के लिए 'if' ब्लॉक का उपयोग किया जाता है। यहां बताया गया है कि कोड का पिछला स्निपेट कैसा दिखेगा यदि 'if' ब्लॉक का उपयोग त्रुटि को पकड़ने के लिए किया जाता है:

... // Some code above If (myVar !== null ) { // Put the success logic here } else { // Handle null value here } // Some code below ...

दोनों मेथड्स के बीच सबसे बड़ा अंतर उन चेक्स का दायरा है जो वे करते हैं। if मेथड केवल myVar वेरिएबल की null मानों के लिए जांच करता है, जबकि try-catch ब्लॉक किसी भी और सभी वेरिएबल्स को पकड़ता है जो null हैं।

यह 'if' ब्लॉक को आपके एप्लिकेशन लॉजिक में नल पॉइंटर्स को समायोजित करने के लिए अधिक लक्षित और साफ दृष्टिकोण बनाता है। हालांकि, यदि एक से अधिक वेरिएबल हैं जो null हो सकते हैं, तो सरलता के लिए try-catch ब्लॉक के साथ जाना बेहतर है।

निष्कर्ष

इस लेख ने देखा कि Java में Null Pointer Exception क्या है, और यह त्रुटि कैसे होती है। हमने कोड के एक टुकड़े को भी देखा जो Null Pointer Exception का कारण बनेगा ताकि यह समझा जा सके कि वास्तविक जीवन की स्थितियों में Null Pointers कैसे बनाए जाते हैं। अंत में, हम Null Pointer Exception को ठीक करने के कुछ शीर्ष तरीकों की पहचान करने के लिए तैयार हुए और दो मेथड्स के बीच तुलना करके अपनी चर्चा समाप्त की।

यदि आप Java प्रोग्राम लिखना चाहते हैं, तो Null Pointer Exception उन आवश्यक बग्स में से एक है जिसे आपको ठीक करना आना चाहिए। यह अपवाद सबसे लगातार मुद्दों में से एक है और आपके कोड के सिंटैक्स या सेमेंटिक्स से संबंधित नहीं है। यह अपवाद को पहचानने और ठीक करने की सबसे मुश्किल समस्याओं में से एक बनाता है। इस लेख की तरह त्वरित संदर्भ आपके अनुभव को आसान बनाने के लिए बाध्य है।

  1. 502 Bad Gateway त्रुटि ठीक करें: त्वरित और विश्वसनीय समाधान 502 Bad Gateway त्रुटि ठीक करें: त्वरित और विश्वसनीय समाधान

    लगभग हर किसी को किसी न किसी वेबसाइट त्रुटि का सामना करना पड़ा होगा। ये प्रकृति में बहुत आम हैं, आपको बस इस मुद्दे के मुख्य कारणों का पता लगाना होगा। त्रुटियों के बारे में जानकर, आप इसके कारणों का निर्धारण कर सकते हैं और इसे ठीक करने में खुद की मदद कर सकते हैं। आश्चर्यजनक रूप से ये मुद्दे ठीक करना बह

  1. Netflix साइट त्रुटियों को त्वरित रूप से ठीक करें: चरण-दर-चरण समस्या निवारण Netflix साइट त्रुटियों को त्वरित रूप से ठीक करें: चरण-दर-चरण समस्या निवारण

    Netflix हमारा सर्वकालिक पसंदीदा साथी है जिसने हमें कोरोनावायरस प्रकोप होने से पहले भी सामाजिक दूरी का पालन करने के लिए प्रोत्साहित किया। हां, आपको यहां ईमानदार होना होगा! और विशेष रूप से अब, इस स्व-संगरोध चरण में, Netflix इन कठिन समय के दौरान हमें मनोरंजन करने के लिए बहुत अच्छा काम कर रहा है। Netfli

  1. विंडोज 10 पर ERR_NETWORK_CHANGED क्रोम एरर को जल्दी ठीक करें विंडोज 10 पर ERR_NETWORK_CHANGED क्रोम एरर को जल्दी ठीक करें

    विंडोज 10 उपयोगकर्ताओं द्वारा सामना की जाने वाली सामान्य समस्याओं में से एक है ERR_NETWORK_CHANGED क्रोम एरर। जैसा कि संदेश स्पष्ट रूप से कहता है, यह त्रुटि तब होती है जब इंटरनेट कनेक्शन या ब्राउज़र किसी पेज को लोड करने की अनुमति नहीं दे रहा है। इसका मतलब है कि आप क्रोम का उपयोग करते समय किसी भी पेज