Kodokon kodokon.com

त्रुटि संदेश पढ़ना और समझना

त्रुटि संदेश को बंद कर देने के बजाय उसे पढ़ना सीखें: प्रकार, फ़ाइल, पंक्ति और स्टैक ट्रेस।

8 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

त्रुटि कोई सज़ा नहीं है। आपका कंप्यूटर न तो आपको जज कर रहा है और न ही आप पर हँस रहा है: उसे बस यह समझ आ गया है कि उसे क्या करना है वह नहीं जानता, और वह आपको बता रहा है कि क्यों। यह ठीक वैसे ही है जैसे कोई GPS "रास्ता फिर से खोजा जा रहा है" की घोषणा करता है - यह उलाहना नहीं, यह जानकारी है। शुरुआती की आदत होती है लाल खिड़की को बिना पढ़े बंद कर देना। डेवलपर की आदत होती है उसे धीरे-धीरे, आख़िर तक पढ़ना। अक्सर यही एकमात्र क्षण होता है जब मशीन आपसे साफ़ शब्दों में बात करती है।

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

PYTHON
Traceback (most recent call last):
  File "shopping.py", line 12, in <module>
    total = price * quantity
NameError: name 'quantity' is not defined
एक Python संदेश: फ़ाइल, पंक्ति 12, NameError प्रकार और उसकी व्याख्या।

ऊपर दिए उदाहरण में सब कुछ साफ़-साफ़ लिखा है। फ़ाइल है shopping.py, पंक्ति है 12, प्रकार है NameError और संदेश कहता है name 'quantity' is not defined। सीधी-सादी भाषा में: पंक्ति 12 पर आप एक ऐसा वेरिएबल quantity इस्तेमाल कर रहे हैं जिसे आपने कभी बनाया ही नहीं, या जिसका नाम आपने ग़लत लिखा है। किसी पेचीदा जाँच-पड़ताल की ज़रूरत नहीं - जवाब तो संदेश में पहले से ही मौजूद था।

Python का स्टैक ट्रेस नीचे से ऊपर की ओर पढ़ा जाता है: आख़िरी पंक्ति प्रकार और व्याख्या देती है, और ठीक उसके ऊपर ग़लती वाली फ़ाइल तथा पंक्ति होती है। जब ट्रेस बहुत लंबा हो, तो पहली ऐसी पंक्ति खोजें जिसमें आपकी अपनी फ़ाइल का ज़िक्र हो। अजीब नामों वाली अनजान फ़ाइलों की ओर इशारा करती पंक्तियाँ उन लाइब्रेरियों की होती हैं जिनका आप उपयोग कर रहे हैं: 99% मामलों में बग उनमें नहीं होता, बल्कि आपके उन्हें बुलाने के तरीके में होता है।

JAVASCRIPT
Uncaught TypeError: Cannot read properties of
undefined (reading 'name')
    at showProfile (app.js:24:18)
    at start (app.js:41:3)
ब्राउज़र कंसोल में भी वही तर्क: फ़ाइल app.js, पंक्ति 24, स्तंभ 18।

कुछ गिने-चुने वाक्यांश बार-बार लौटकर आते हैं, और उन्हें पहचान लेना फ़ायदेमंद है। not defined का मतलब है कि आपने जो नाम इस्तेमाल किया वह उस जगह मौजूद ही नहीं है। undefined का मतलब है कि चीज़ मौजूद तो है, पर उसमें कोई मान नहीं है। unexpected बताता है कि प्रोग्राम कुछ और की उम्मीद कर रहा था, आमतौर पर कोई भूला हुआ कोष्ठक या उद्धरण चिह्न। permission denied अधिकारों की समस्या की ओर इशारा करता है, कोड की नहीं। और no such file or directory का अर्थ है कि आपने जो पथ लिखा है वह कहीं नहीं ले जाता।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. त्रुटि संदेश का कौन सा हिस्सा बताता है कि सबसे पहले कहाँ देखना है?
    • फ़ाइल का नाम और पंक्ति संख्या
    • स्क्रीन पर दिख रहे पाठ का रंग
    • संदेश की कुल लंबाई
    • आपके ऑपरेटिंग सिस्टम का नाम
  2. Python का स्टैक ट्रेस किस दिशा में पढ़ा जाता है?
    • ऊपर से नीचे: पहली पंक्ति समाधान देती है
    • नीचे से ऊपर: आख़िरी पंक्ति प्रकार और व्याख्या देती है
    • किसी भी दिशा में, यह केवल सजावटी है
  3. not defined वाली त्रुटि का आमतौर पर क्या मतलब होता है?
    • आपने जो नाम इस्तेमाल किया वह प्रोग्राम की उस जगह मौजूद नहीं है
    • फ़ाइल खोलने के लिए बहुत बड़ी है
    • इंटरनेट कनेक्शन टूट गया