⊗jsSpExcPrb 150 of 294 menu

JavaScript में अपवादों को थ्रो करना

JSON उत्पाद कार्य के catch ब्लॉक पर विचार करें:

catch (error) { if (error.name == 'SyntaxError') { alert('अमान्य JSON उत्पाद'); } else if (error.name == 'ProductCostError') { alert('उत्पाद की कीमत या मात्रा गायब है'); } }

जैसा कि आप देख सकते हैं, हम अपने द्वारा योजनाबद्ध दो अपवादों को पकड़ रहे हैं और उस पर किसी तरह प्रतिक्रिया कर रहे हैं। लेकिन क्या होगा यदि हमारे द्वारा अनपेक्षित प्रकार का कोई अन्य अपवाद उत्पन्न होता है? इस स्थिति में यह catch ब्लॉक में भी आ जाएगा, लेकिन इस पर कोई प्रतिक्रिया नहीं होगी, क्योंकि दूसरे प्रकार का अपवाद हमारे किसी भी if में नहीं आएगा।

जब मैं कहता हूं कि कोई प्रतिक्रिया नहीं होगी, तो मेरा मतलब है कि वास्तव में कोई नहीं: यहां तक कि कंसोल में त्रुटि भी नहीं दिखेगी। हमारा कोड बस चुपचाप काम नहीं करेगा।

इसलिए निम्नलिखित नियम है: आपका कोड केवल उन्हीं अपवादों को पकड़े जिनसे वह निपटना जानता है। यदि अपवाद अज्ञात है, तो इसे throw का उपयोग करके आगे थ्रो करना चाहिए। इस स्थिति में इसे ऊपर कोई और अधिक जानकार व्यक्ति पकड़ लेगा या फिर अपवाद कंसोल में त्रुटि के रूप में दिखाई देगा।

आइए अपने कोड को सही करें:

catch (error) { if (error.name == 'SyntaxError') { alert('अमान्य JSON उत्पाद'); } else if (error.name == 'ProductCostError') { alert('उत्पाद की कीमत या मात्रा गायब है'); } else { throw error; // अपवाद को आगे थ्रो करें } }

निम्नलिखित कोड दिया गया है:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('स्टोरेज में जगह खत्म हो गई'); } if (error.name == 'SyntaxError') { alert('अमान्य JSON'); } }

इस कोड में क्या गलत है? इसे बेहतर बनाएं।

kkplroruby