त्रुटि संदेश को बंद कर देने के बजाय उसे पढ़ना सीखें: प्रकार, फ़ाइल, पंक्ति और स्टैक ट्रेस।
इस पाठ को Kodokon में खोलेंत्रुटि कोई सज़ा नहीं है। आपका कंप्यूटर न तो आपको जज कर रहा है और न ही आप पर हँस रहा है: उसे बस यह समझ आ गया है कि उसे क्या करना है वह नहीं जानता, और वह आपको बता रहा है कि क्यों। यह ठीक वैसे ही है जैसे कोई GPS "रास्ता फिर से खोजा जा रहा है" की घोषणा करता है - यह उलाहना नहीं, यह जानकारी है। शुरुआती की आदत होती है लाल खिड़की को बिना पढ़े बंद कर देना। डेवलपर की आदत होती है उसे धीरे-धीरे, आख़िर तक पढ़ना। अक्सर यही एकमात्र क्षण होता है जब मशीन आपसे साफ़ शब्दों में बात करती है।
लगभग हर त्रुटि संदेश में एक ही तरह की जानकारियाँ होती हैं। त्रुटि का प्रकार, जो उसे एक बड़े परिवार में रखता है। संदेश, जो एक वाक्य में बताता है कि गड़बड़ क्या है। संबंधित फ़ाइल और पंक्ति संख्या, जो आपको ठीक-ठीक बताती हैं कि कहाँ देखना है। और कभी-कभी एक स्टैक ट्रेस: उन चरणों की सूची जिनसे प्रोग्राम गुज़रा था, इससे पहले कि वह रुक जाए।
Traceback (most recent call last):
File "shopping.py", line 12, in <module>
total = price * quantity
NameError: name 'quantity' is not definedऊपर दिए उदाहरण में सब कुछ साफ़-साफ़ लिखा है। फ़ाइल है shopping.py, पंक्ति है 12, प्रकार है NameError और संदेश कहता है name 'quantity' is not defined। सीधी-सादी भाषा में: पंक्ति 12 पर आप एक ऐसा वेरिएबल quantity इस्तेमाल कर रहे हैं जिसे आपने कभी बनाया ही नहीं, या जिसका नाम आपने ग़लत लिखा है। किसी पेचीदा जाँच-पड़ताल की ज़रूरत नहीं - जवाब तो संदेश में पहले से ही मौजूद था।
Python का स्टैक ट्रेस नीचे से ऊपर की ओर पढ़ा जाता है: आख़िरी पंक्ति प्रकार और व्याख्या देती है, और ठीक उसके ऊपर ग़लती वाली फ़ाइल तथा पंक्ति होती है। जब ट्रेस बहुत लंबा हो, तो पहली ऐसी पंक्ति खोजें जिसमें आपकी अपनी फ़ाइल का ज़िक्र हो। अजीब नामों वाली अनजान फ़ाइलों की ओर इशारा करती पंक्तियाँ उन लाइब्रेरियों की होती हैं जिनका आप उपयोग कर रहे हैं: 99% मामलों में बग उनमें नहीं होता, बल्कि आपके उन्हें बुलाने के तरीके में होता है।
Uncaught TypeError: Cannot read properties of
undefined (reading 'name')
at showProfile (app.js:24:18)
at start (app.js:41:3)कुछ गिने-चुने वाक्यांश बार-बार लौटकर आते हैं, और उन्हें पहचान लेना फ़ायदेमंद है। not defined का मतलब है कि आपने जो नाम इस्तेमाल किया वह उस जगह मौजूद ही नहीं है। undefined का मतलब है कि चीज़ मौजूद तो है, पर उसमें कोई मान नहीं है। unexpected बताता है कि प्रोग्राम कुछ और की उम्मीद कर रहा था, आमतौर पर कोई भूला हुआ कोष्ठक या उद्धरण चिह्न। permission denied अधिकारों की समस्या की ओर इशारा करता है, कोड की नहीं। और no such file or directory का अर्थ है कि आपने जो पथ लिखा है वह कहीं नहीं ले जाता।
not defined वाली त्रुटि का आमतौर पर क्या मतलब होता है?