प्रोग्रामिंग त्रुटियां अपरिहार्य हैं। देर-सबेर, आपका आवेदन कुछ अनपेक्षित व्यवहार का अनुभव करेगा। किसी भी अन्य प्रोग्रामिंग भाषा की तरह, आपके कोड में कुछ गलत होने पर जावास्क्रिप्ट त्रुटियाँ उत्पन्न करता है।

त्रुटियां किसी एप्लिकेशन के सामान्य प्रवाह को बाधित करती हैं। लेकिन वे आपके एप्लिकेशन को अप्रत्याशित व्यवहार से बचाने में भी मदद करते हैं। त्रुटियों को ठीक से कैसे संभालना है, यह जानना महत्वपूर्ण है।

त्रुटि प्रबंधन क्यों महत्वपूर्ण है?

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

विकास के दौरान त्रुटि प्रबंधन भी सहायक होता है। आप रनटाइम त्रुटि पकड़ सकते हैं और इसके साथ कुछ उपयोगी कर सकते हैं, जैसे इसे ब्राउज़र कंसोल पर लॉग इन करना। यह दुर्घटना का कारण बनने वाली त्रुटि से अधिक सुंदर है और यह नहीं जानता कि त्रुटि कहां या क्यों हुई।

जावास्क्रिप्ट की संरचना अंतर्निहित त्रुटियां

जावास्क्रिप्ट की त्रुटियां तीन गुणों वाली वस्तुएं हैं:

  • नाम: यह त्रुटि का नाम है। उदाहरण के लिए, एक अनुपलब्ध चर नाम SyntaxError नामक एक त्रुटि उत्पन्न करेगा।
  • संदेश: यह संदेश का मुख्य भाग है और त्रुटि को पाठ में स्पष्ट करता है।
  • कारण: कॉल स्टैक का ट्रैक रखने के लिए आप कस्टम त्रुटियों के साथ इस प्रॉपर्टी का उपयोग कर सकते हैं।

जावास्क्रिप्ट में सामान्य प्रकार की त्रुटि

जावास्क्रिप्ट में पाई जाने वाली कुछ सामान्य त्रुटियां यहां दी गई हैं।

वक्य रचना त्रुटि

सिंटैक्स त्रुटियाँ तब हो सकती हैं जब JavaScript आपके कोड की व्याख्या करने का प्रयास करता है। यदि आपका कोड सही सिंटैक्स के अनुरूप नहीं है तो यह एक त्रुटि उत्पन्न करेगा। कुछ सामान्य त्रुटियाँ जो सिंटैक्स त्रुटियाँ उत्पन्न कर सकती हैं वे हैं:

  • वेरिएबल नाम मौजूद नहीं हैं.
  • एक समारोह के बाद गुम "}"।
  • एक शर्त के बाद ")" गायब है।

संदर्भ त्रुटि

संदर्भ त्रुटियाँ तब होती हैं जब कोई प्रोग्राम करने का प्रयास करता है एक चर का संदर्भ लें जो अनुपलब्ध या दायरे से बाहर है।

त्रुटि प्रकार

जावास्क्रिप्ट एक प्रकार की त्रुटि फेंक सकता है जब यह एक ऑपरेशन नहीं कर सकता है क्योंकि जिस प्रकार की अपेक्षा की जाती है वह प्राप्त होने वाले से अलग है।

यूआरआईत्रुटि

यह त्रुटि तब होती है जब आप एक वैश्विक URI हैंडलिंग फ़ंक्शन—जैसे decodeURIComponent()—का गलत तरीके से उपयोग करते हैं। नतीजतन, एन्कोडिंग या डिकोडिंग विफल हो जाता है।

कुल त्रुटि

इस त्रुटि का उपयोग एक में लिपटे कई त्रुटियों का प्रतिनिधित्व करने के लिए किया जाता है। जब आप एक साथ कई त्रुटियां फेंकना चाहते हैं तो इसका उपयोग करें। उदाहरण के लिए, Promise.any() एक AggregateError() फेंक सकता है जब इसे पास किए गए सभी वादे अस्वीकार कर दिए जाते हैं।

आंतरिक त्रुटि

जब जावास्क्रिप्ट इंजन के अंदर कोई त्रुटि होती है तो एक आंतरिक त्रुटि फेंक दी जाती है।

रेंज त्रुटि

कुछ फ़ंक्शन उन मानों की श्रेणी निर्धारित करते हैं जिन्हें आप तर्क के रूप में पारित कर सकते हैं। यह त्रुटि तब होती है जब आप उस मान को पास करने का प्रयास करते हैं जो उस श्रेणी में शामिल नहीं है।

कोशिश से निपटने में त्रुटि... कैच ब्लॉक

जावास्क्रिप्ट के साथ अंतर्निहित अपवाद हैंडलिंग कार्यक्षमता प्रदान करता है कोशिश करो…पकड़ो…आखिरकार खंड मैथा। यह आपको का उपयोग करके अपनी स्वयं की त्रुटियों को उठाने की अनुमति भी देता है फेंकना ऑपरेटर।

रनटाइम के दौरान होने वाली त्रुटियों को संभालने के लिए आप try…catch ब्लॉक का उपयोग कर सकते हैं। आप वैध कोड लिखते हैं जिसे आप कोशिश ब्लॉक में सही ढंग से निष्पादित करने की अपेक्षा करते हैं। कैच ब्लॉक में, आप एरर-हैंडलिंग कोड लिख सकते हैं।

प्रयत्न {
// मान्य जावास्क्रिप्ट कोड
} पकड़ (गलती) {
// हैंडल एरर
} आखिरकार {
// त्रुटि होने पर भी निष्पादित किया जाता है
}

यदि कोशिश ब्लॉक में कोड कोई त्रुटि नहीं उठाता है तो कैच ब्लॉक को नजरअंदाज कर दिया जाता है। यदि यह कोई त्रुटि उत्पन्न करता है, तो निष्पादन कैच ब्लॉक में कूद जाता है। अंत में ब्लॉक में कोड चलता है कि कोई त्रुटि होती है या नहीं। यह ब्लॉक अनिवार्य नहीं है, इसलिए यदि आपको इसकी आवश्यकता नहीं है तो इसे छोड़ दें।

आपके द्वारा try ब्लॉक में शामिल किया गया कोड मान्य होना चाहिए। यदि ऐसा नहीं है, तो जावास्क्रिप्ट एक पार्सिंग त्रुटि फेंक देगा।

आइए एक व्यावहारिक उदाहरण देखें:

प्रयत्न {
सांत्वना देनालॉग (पाठ)
} पकड़ (गलती) {
सांत्वना देना।लकड़ी का लट्ठा(गलती।संदेश)
} आखिरकार {
कंसोल.लॉग("परवाह किए बिना निष्पादित किया जाएगा")
}

यह प्रोग्राम टेक्स्ट वेरिएबल के मान को लॉग करने का प्रयास करता है। चूंकि उस चर को परिभाषित नहीं किया गया है, प्रोग्राम एक त्रुटि फेंक देगा। यह त्रुटि कैच ब्लॉक में कंसोल पर मुद्रित होती है। अंत में ब्लॉक तब स्वयं का एक संदेश चलाता है और प्रिंट करता है।

संदर्भ त्रुटि: पाठ परिभाषित नहीं है
परवाह किए बिना निष्पादित किया जाएगा

उन स्थितियों में जहां आपको अपनी त्रुटि खुद उठानी पड़ती है, इसका उपयोग करें फेंकना ऑपरेटर।

इस उदाहरण पर विचार करें जो डेटा गलत होने पर त्रुटि उत्पन्न करता है:

स्थिरांक डेटा = गेटडाटा ()

प्रयत्न {
अगर (! डेटा) {
फेंकना "कोई डेटा नहीं"
}

सांत्वना देनालॉग (डेटा)
// जारी रखें
} पकड़(गलती) {
सांत्वना देनालॉग (त्रुटि) // "कोई डेटा नहीं"
}

इस उदाहरण में, प्रोग्राम getData () फ़ंक्शन को कॉल करता है और इसके परिणाम को डेटा वैरिएबल को असाइन करता है। कोशिश ब्लॉक में, डेटा खाली होने पर ब्लॉक एक कस्टम त्रुटि फेंकता है। कैच ब्लॉक उस त्रुटि को पकड़ता है और इसे कंसोल पर लॉग करता है।

विकास के दौरान थ्रोइंग एरर बहुत फायदेमंद होता है। आप कस्टम त्रुटि संदेश का उपयोग यह समझने के लिए कर सकते हैं कि आपका एप्लिकेशन अपेक्षा के अनुरूप काम क्यों नहीं कर रहा है।

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

फेंकना {
नाम: "त्रुटि का नाम",
संदेश: "त्रुटि संदेश"
}

त्रुटियों को फेंकते समय आप जावास्क्रिप्ट के अंतर्निर्मित निर्माणकर्ताओं का भी उपयोग कर सकते हैं। इन कंस्ट्रक्टर्स में एरर, सिंटेक्स एरर और रेफरेंस एरर शामिल हैं।

एरर कंस्ट्रक्टर का उपयोग करके एरर थ्रो करने के लिए, इस कोड का उपयोग करें:

फेंकनानयागलती("कोई डेटा नहीं")

अब आप नाम और संदेश का संदर्भ दे सकते हैं।

सांत्वना देनालॉग (त्रुटि.नाम) // गलती
सांत्वना देनालॉग (त्रुटि। संदेश) // कोई डेटा नहीं

जावास्क्रिप्ट त्रुटि वस्तु का विस्तार

एक कस्टम त्रुटि वर्ग उन त्रुटियों को संभालते समय काम आता है जो पहले से ही जावास्क्रिप्ट द्वारा प्रदान की गई वस्तुओं से मेल नहीं खाती हैं। उदाहरण के लिए, हो सकता है कि आप डेटा सत्यापन त्रुटि को एक विशिष्ट प्रकार के रूप में अलग करना चाहें जिसे ValidationError कहा जाता है।

आप एक का उपयोग कर सकते हैं जावास्क्रिप्ट ES2015 वर्ग एक कस्टम त्रुटि वर्ग बनाने के लिए।

कक्षामान्यता त्रुटिफैलीगलती{
निर्माता(संदेश) {
उत्तम(संदेश);
यह नाम = "मान्यता त्रुटि";
}
}

इस तरह ValidationError वर्ग का उपयोग करके एक त्रुटि फेंको:

फेंकनानया सत्यापन त्रुटि ("आपका त्रुटि संदेश")

फेंकी गई त्रुटि नाम और संदेश मानों वाली एक वस्तु होगी।

{
नाम: "मान्यता त्रुटि",
संदेश: "आपका त्रुटि संदेश"
}

मदद करने के लिए त्रुटियां हैं

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

जब आप जावास्क्रिप्ट को "मैला मोड" में लिख रहे हों, तो सिंटैक्स त्रुटियों जैसी कुछ त्रुटियों का पता नहीं चल सकता है। सख्त मोड का उपयोग करने से जावास्क्रिप्ट उन त्रुटियों को पकड़ सकता है जिन्हें वह अन्यथा अनदेखा कर देता।