संदर्भ के साथ Node.js त्रुटि

V8 9.3 और बाद में फेंकने के लिए त्रुटि कारण कैसे जोड़ें

त्रुटियों के लिए अधिक संदर्भ

V8 Javascript इंजन के संस्करण 9.3 से शुरू होकर, डेवलपर्स के पास डिफ़ॉल्ट त्रुटि फेंकते समय एक नई प्रकार की जानकारी जोड़ने का विकल्प होगा। एकल तर्क प्रदान करने के बजाय, आप एक प्रकार का त्रुटि-प्रकार जोड़ने में सक्षम होंगे, जिसे त्रुटि कारण भी कहा जाता है, ताकि ऐसी त्रुटियों को पकड़ने के लिए एक हैंडलर बेहतर ढंग से यह निर्धारित कर सके कि त्रुटि कहाँ से उत्पन्न हुई है।

अधिक सटीक होने के लिए, त्रुटि-निर्माता एक दूसरा वैकल्पिक पैरामीटर स्वीकार करता है, जो विकल्पों का एक उद्देश्य है, जहां संपत्ति "कारण" का उपयोग किया जा सकता है।

आइए एक उदाहरण देखें।

/**
 * A simple demonstration how
 * the syntax will benefit from
 * the error-cause option in
 * new Errors.
 * 
 * Note that the example is greatly
 * simplified to focus on the 
 * relevant changes.
 */
async function processImage(props) {
  try {
    await minifyImage(props);
  } catch (err) {
    throw new Error('image-minification', { cause: err });
  }
  try {
    await uploadImage(props);
  } catch (err) {
    throw new Error('image-upload', { cause: err });
  }
  try {
    await cleanUpCache(props);
    await notifyUser(props);
  } catch (err) {
    throw new Error('post-processing', { cause: err });
  }
}

//
// ... later in our code ...
//

async function selectAndUploadImage(props){
  try {
    await processImage(props);
  } catch (err) {
    console.error(err.cause);
    
    switch(err) {
      case 'image-minification':
        // handle the minification error,
        // which is available by accessing
        // 'err.cause'.
        break;
      case 'image-upload':
        // ...
        break;
      case 'post-processing':
        // ...
        break;
    }
  }
}

त्रुटि कारणों का लाभ

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

V8 संस्करण 9.3 और बाद के संस्करण के साथ उपलब्ध है

लेखन के समय, यह परिवर्तन अभी तक सार्वजनिक उपयोग के लिए उपलब्ध नहीं है, क्योंकि वर्तमान नवीनतम Node.js संस्करण 16.4.2 V8 के नवीनतम स्थिर संस्करण का उपयोग करता है, जो कि 9.1 है। जब Node.js संस्करण 9.3 का उपयोग करना शुरू करेगा, तो मैं इस लेख को तदनुसार अपडेट करूंगा।

सुझाव

संबंधित

परिशिष्ट

भाषाएँ