जावास्क्रिप्ट में एक्सेप्शन थ्रो करना
पिछले पाठों में हमने दो स्थानों का अध्ययन किया, जहाँ जावास्क्रिप्ट किसी समस्या की स्थिति में एक्सेप्शन थ्रो करती है।
हालाँकि, आपकी परियोजना में अन्य स्थितियाँ भी हो सकती हैं जो आपके लिए एक्सेप्शनल हैं, लेकिन जावास्क्रिप्ट के लिए नहीं। ऐसे में हम अपने खुद के, यूजर-डिफाइंड एक्सेप्शन बना और थ्रो कर सकते हैं।
आइए इसके लिए आवश्यक सिंटैक्स समझते हैं।
सबसे पहले new Error कमांड का उपयोग करके
एक एक्सेप्शन बनाना होगा, जिसके पैरामीटर के रूप में
एक्सेप्शन का टेक्स्ट पास करें:
new Error('एक्सेप्शन का टेक्स्ट');
फिर throw कमांड का उपयोग करके
इस एक्सेप्शन को थ्रो करना होगा:
throw new Error('एक्सेप्शन का टेक्स्ट');
एक्सेप्शन थ्रो करना जावास्क्रिप्ट को यह मानने पर मजबूर कर देता है
कि एक एक्सेप्शनल स्थिति उत्पन्न हो गई है।
इसका मतलब है कि ऐसे एक्सेप्शन को try-catch कंस्ट्रक्शन
का उपयोग करके कैच किया जा सकता है और
आवश्यक तरीके से हैंडल किया जा सकता है।
आइए एक उदाहरण देखते हैं कि इसका उपयोग कैसे करें। मान लीजिए कि हमारे पास एक फंक्शन है जो एक नंबर को दूसरे से विभाजित करता है:
function div(a, b) {
return a / b;
}
आइए मान लें कि शून्य से विभाजन
अनुमति नहीं है और ऐसा करने का प्रयास करने पर
एक एक्सेप्शनल स्थिति उत्पन्न होनी चाहिए। इसके लिए
फंक्शन में यह जाँच करेंगे कि क्या 0 से विभाजन
तो नहीं किया जा रहा है। यदि नहीं - तो विभाजन करेंगे,
और यदि हाँ - तो एक्सेप्शन थ्रो करेंगे:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('शून्य से विभाजन त्रुटि');
}
}
आइए सबसे पहले बिना एक्सेप्शन कैच किए,
0 से विभाजन करने का प्रयास करें:
alert( div(3, 0) );
इस स्थिति में स्क्रिप्ट का निष्पादन रुक जाएगा
और कंसोल में 'शून्य से विभाजन त्रुटि' टेक्स्ट वाली
एरर दिखाई देगी (जाँच करें)। आइए अब
हमारी एरर को कैच करें और
उसे किसी तरह से हैंडल करें:
try {
alert( div(3, 0) );
} catch (error) {
alert('आप शून्य से विभाजन करने का प्रयास कर रहे हैं, जो अनुमति नहीं है');
}
जावास्क्रिप्ट में ऋणात्मक संख्या का वर्गमूल निकालने का प्रयास एक्सेप्शन थ्रो करने का कारण नहीं बनता:
let result = Math.sqrt(-1);
console.log(result); // NaN प्रिंट करेगा
अपना खुद का एक फंक्शन लिखें, जो किसी संख्या का वर्गमूल निकालेगा और साथ ही एक्सेप्शन थ्रो करेगा, यदि वर्गमूल ऋणात्मक संख्या से निकाला जा रहा हो।