जावास्क्रिप्ट में त्रुटि प्रबंधन: try/catch, throw और उन्नत तकनीकें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: त्रुटि प्रबंधन विश्वसनीय कोड की नींव क्यों है

Node.js पर चलने वाला कोई भी एप्लिकेशन देर-सबेर असाधारण स्थितियों का सामना करता है: गलत उपयोगकर्ता इनपुट, नेटवर्क विफलता, डिस्क पर फ़ाइल का न होना, या डेटाबेस से गलत डेटा। उचित त्रुटि प्रबंधन के बिना, ये स्थितियाँ सर्वर क्रैश, मेमोरी लीक या अनिश्चित व्यवहार का कारण बनती हैं। जावास्क्रिप्ट में, विशेष रूप से Node.js वातावरण में, try/catch तंत्र दोष-सहिष्णु सिस्टम बनाने के लिए एक मूलभूत उपकरण है। इस लेख में, हम न केवल क्लासिक try/catch को समझेंगे, बल्कि उन्नत तकनीकों को भी: कस्टम त्रुटि वर्ग, प्रॉमिस और एसिंक्रोनस फ़ंक्शन के साथ काम करना, और लॉगिंग के सर्वोत्तम अभ्यास।



मूल बातें: try, catch और finally ब्लॉक

जावास्क्रिप्ट में त्रुटि प्रबंधन का मूल सिंटैक्स इस प्रकार है:

try {  // कोड जो अपवाद फेंक सकता है  const data = JSON.parse('{"name": "Node.js"}');  console.log(data.name);} catch (error) {  // त्रुटि का प्रबंधन  console.error('एक त्रुटि हुई:', error.message);} finally {  // कोड जो किसी भी स्थिति में निष्पादित होगा  console.log('finally ब्लॉक निष्पादित हुआ');}

यह कैसे काम करता है:

  • try — में संभावित रूप से खतरनाक कोड होता है।
  • catch — यदि कोई अपवाद उत्पन्न होता है तो उसे पकड़ता है। error पैरामीटर में त्रुटि ऑब्जेक्ट आता है।
  • finally — हमेशा निष्पादित होता है, चाहे त्रुटि हुई हो या नहीं। फ़ाइलें बंद करने, संसाधनों को मुक्त करने या लेन-देन पूरा करने के लिए आदर्श।

याद रखना महत्वपूर्ण है: finally try या catch ब्लॉक में return के बाद भी काम करेगा।



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

अंतर्निहित त्रुटि कंस्ट्रक्टर अपवादों को अधिक सटीक रूप से वर्गीकृत करने में मदद करते हैं:

  • Error — सभी त्रुटियों के लिए आधार वर्ग।
  • SyntaxError — सिंटैक्स त्रुटि (जैसे, गलत JSON)।
  • TypeError — गलत डेटा प्रकार (जैसे, गैर-फ़ंक्शन को कॉल करना)।
  • ReferenceError — अस्तित्वहीन चर का संदर्भ।
  • RangeError — स्वीकार्य सीमा से बाहर (जैसे, रिकर्सन)।

विभिन्न प्रकारों के प्रबंधन का उदाहरण:

try {  const obj = null;  console.log(obj.property); // TypeError} catch (err) {  if (err instanceof TypeError) {    console.log('प्रकार त्रुटि:', err.message);  } else if (err instanceof ReferenceError) {    console.log('चर नहीं मिला');  } else {    console.log('अज्ञात त्रुटि:', err);  }}


स्वयं की त्रुटियाँ उत्पन्न करना: throw ऑपरेटर

कभी-कभी स्पष्ट रूप से इंगित करना आवश्यक होता है कि प्रोग्राम में एक असाधारण स्थिति उत्पन्न हुई है। इसके लिए throw ऑपरेटर का उपयोग किया जाता है। यह कुछ भी फेंक सकता है: स्ट्रिंग, संख्या, ऑब्जेक्ट, लेकिन सबसे अच्छा Error वर्ग या उसके वंशज का इंस्टेंस है।

function divide(a, b) {  if (b === 0) {    throw new Error('शून्य से भाग देना निषिद्ध है');  }  if (typeof a !== 'number' || typeof b !== 'number') {    throw new TypeError('तर्क संख्याएँ होनी चाहिए');  }  return a / b;}

try { const result = divide(10, 0); console.log(result);} catch (err) { console.error(err.name + ': ' + err.message);}

Error को फेंकना स्ट्रिंग से बेहतर क्यों है? Error ऑब्जेक्ट में कॉल स्टैक (stack) होता है, जो Node.js में डिबगिंग के लिए महत्वपूर्ण है। स्ट्रिंग ऐसी जानकारी नहीं देगी।



कस्टम त्रुटि वर्ग बनाना

वास्तविक प्रोजेक्ट्स में (जैसे, Express पर वेब सर्वर) विभिन्न स्थितियों के लिए अपने स्वयं के त्रुटि प्रकार रखना सुविधाजनक होता है: ValidationError, NotFoundError, DatabaseError। यह केंद्रीकृत प्रबंधन को सरल बनाता है।

class ValidationError extends Error {                

ब्लॉग

पुस्तक अनुशंसाएँ