⊗jsSpPrmChE 169 of 294 menu

जावास्क्रिप्ट में प्रॉमिस चेन में एक्सेप्शन

मान लीजिए कि कुछ कारणों से हमारा प्रॉमिस त्रुटि के साथ समाप्त हो जाता है:

let promise = new Promise(function(resolve, reject) { setTimeout(function() { reject('error'); }, 3000); });

इस स्थिति में, कोड का निष्पादन तुरंत उस then पर चला जाएगा जिसमें त्रुटि हैंडलर फ़ंक्शन है, या पहले catch पर, इसके आधार पर कि कौन सा पहले मिलता है।

पहली स्थिति का उदाहरण यहाँ दिया गया है:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; }, function(error) { // निष्पादन तुरंत यहाँ कूद जाएगा } ).then( function(result) { console.log(result); } );

दूसरी स्थिति का उदाहरण यहाँ दिया गया है:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // निष्पादन तुरंत यहाँ कूद जाएगा } ).then( function(result) { console.log(result); } );

हैंडलर फ़ंक्शन के पास कार्रवाई के दो विकल्प हैं: यदि उसने अपवादीय स्थिति को संभाल लिया है, तो वह return के माध्यम से परिणाम वापस कर सकता है और निष्पादन चेन के साथ आगे जारी रहेगा। यदि उसने त्रुटि को संभाला नहीं है, तो वह या तो कुछ भी वापस नहीं कर सकता है, या throw के माध्यम से एक अपवाद (exception) फेंक सकता है। इस स्थिति में, निष्पादन अगले त्रुटि हैंडलर (then या catch - जो पहले मिले) पर चला जाएगा।

आमतौर पर, चेन की सभी त्रुटियों को एक ही स्थान पर पकड़ा जाता है: चेन के अंत में एक catch लगाया जाता है:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // त्रुटि की स्थिति में यहाँ पहुंचेंगे } );

इस स्थिति में, अपवाद स्वयं प्रॉमिस में उत्पन्न हो सकता है, या चेन के किसी भी लिंक में throw के माध्यम से फेंका जा सकता है:

promise.then( function(result) { return result + '1'; } ).then( function(result) { if (सबकुछठीकहै) { return result + '2'; } else { throw new Error('त्रुटि'); // निकटतम हैंडलर पर जाएँ } } ) .then( function(result) { return result + '3'; } ).catch( function(error) { // निकटतम हैंडलर } );

ध्यान रखें कि catch विशेष रूप से त्रुटि का निदान करने के लिए आवश्यक है: क्या यह हल करने योग्य है या नहीं। यदि त्रुटि हल करने योग्य है, तो catch को उसका समाधान अपने बाद वाले then को पास करना चाहिए। और यदि हल करने योग्य नहीं है (या यह catch बस नहीं जानता कि इसे कैसे हल किया जाए), तो हमें या तो कुछ भी वापस नहीं करना चाहिए या एक अपवाद फेंकना चाहिए:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { if (त्रुटिहलकरनेयोग्यहै) { return 'डेटा'; // अगले then को भेजें } else { // कुछ भी वापस न करें या अपवाद फेंकें } } ).then( function(result) { // यहाँ त्रुटि का समाधान करें } );
हिन्दी
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
हम साइट के कार्य, विश्लेषण और व्यक्तिगतकरण के लिए कुकीज़ का उपयोग करते हैं। डेटा प्रसंस्करण गोपनीयता नीति के अनुसार किया जाता है।
सभी स्वीकार करें कॉन्फ़िगर करें अस्वीकार करें