ES6 - त्रुटि से निपटने
प्रोग्रामिंग में तीन प्रकार की त्रुटियां हैं: सिंटेक्स एरर्स, रनटाइम एरर्स और लॉजिकल एरर्स।
सिंटेक्स त्रुटियां
सिंटैक्स त्रुटियां, जिन्हें भी कहा जाता है parsing errors, पारंपरिक प्रोग्रामिंग भाषाओं में संकलन समय और जावास्क्रिप्ट में व्याख्या के समय पर होते हैं। जब कोई सिंटैक्स त्रुटि जावास्क्रिप्ट में होती है, सिंटैक्स त्रुटि के रूप में केवल एक ही थ्रेड के भीतर मौजूद कोड प्रभावित होता है और अन्य थ्रेड्स में कोड के बाकी कोड निष्पादित हो जाते हैं, जिसमें कुछ भी नहीं लगता है कि कोड जिसमें त्रुटि है।
रनटाइम त्रुटियां
रनटाइम त्रुटियों को भी कहा जाता है exceptions, निष्पादन के दौरान (संकलन / व्याख्या के बाद)। अपवाद उस धागे को भी प्रभावित करते हैं जिसमें वे होते हैं, जिससे अन्य जावास्क्रिप्ट धागे सामान्य निष्पादन को जारी रखने की अनुमति देते हैं।
तार्किक त्रुटियां
तर्क त्रुटियों को ट्रैक करने के लिए त्रुटियों का सबसे कठिन प्रकार हो सकता है। ये त्रुटियाँ सिंटैक्स या रनटाइम त्रुटि का परिणाम नहीं हैं। इसके बजाय, वे तब होते हैं जब आप तर्क में गलती करते हैं जो आपकी स्क्रिप्ट को ड्राइव करता है और आपको उम्मीद के मुताबिक परिणाम नहीं मिलता है।
आप उन त्रुटियों को नहीं पकड़ सकते, क्योंकि यह आपकी व्यावसायिक आवश्यकता पर निर्भर करता है कि आप अपने कार्यक्रम में किस प्रकार का तर्क रखना चाहते हैं।
जब रनटाइम त्रुटियाँ उत्पन्न होती हैं, तो जावास्क्रिप्ट त्रुटि वस्तु के उदाहरणों को फेंकता है। निम्न तालिका त्रुटि ऑब्जेक्ट के पूर्वनिर्धारित प्रकारों को सूचीबद्ध करती है।
अनु क्रमांक | त्रुटि वस्तु और विवरण |
---|---|
1 |
EvalError एक त्रुटि बनाता है जो वैश्विक फ़ंक्शन के संबंध में एक त्रुटि का प्रतिनिधित्व करता है eval()। |
2 |
RangeError एक त्रुटि का प्रतिनिधित्व करने वाले एक उदाहरण को बनाता है जब एक संख्यात्मक चर या पैरामीटर इसकी मान्य सीमा के बाहर होता है। |
3 |
ReferenceError एक त्रुटि का प्रतिनिधित्व करने वाले एक उदाहरण को बनाता है जो एक अमान्य संदर्भ को डीफ़र करते समय होता है। |
4 |
SyntaxError कोड को पार्स करते समय होने वाली सिंटैक्स त्रुटि का प्रतिनिधित्व करने वाला एक उदाहरण बनाता है। |
5 |
TypeError एक ऐसे उदाहरण को बनाता है जो एक त्रुटि को दर्शाता है जब एक चर या पैरामीटर वैध प्रकार का नहीं होता है। |
6 |
URIError एक त्रुटि का प्रतिनिधित्व करते हुए एक उदाहरण बनाता है जो तब होता है encodeURI() या decodeURI() अमान्य पैरामीटर पारित किए गए हैं। |
अपवाद फेंकना
का उपयोग कर एक त्रुटि (पूर्वनिर्धारित या उपयोगकर्ता परिभाषित) को उठाया जा सकता है throw statement। बाद में इन अपवादों को पकड़ा जा सकता है और आप एक उचित कार्रवाई कर सकते हैं। निम्नलिखित के लिए सिंटैक्स है।
सिंटेक्स: एक सामान्य अपवाद को फेंकना
throw new Error([message])
OR
throw([message])
सिंटेक्स: एक विशिष्ट अपवाद को फेंकना
throw new Error_name([message])
उपवाद सम्भालना
अपवाद हैंडलिंग एक के साथ पूरा किया है try...catch statement। जब कार्यक्रम एक अपवाद का सामना करता है, तो कार्यक्रम एक अनफेयर तरीके से समाप्त हो जाएगा। इस अप्रत्याशित त्रुटि के खिलाफ सुरक्षा के लिए, हम एक कोशिश ... कैच स्टेटमेंट में अपना कोड लपेट सकते हैं।
कोशिश ब्लॉक का पालन या तो एक कैच ब्लॉक या एक अंततः ब्लॉक (या दोनों में से एक) द्वारा किया जाना चाहिए। जब प्रयास ब्लॉक में अपवाद होता है, तो अपवाद ई में रखा जाता है और कैच ब्लॉक निष्पादित होता है। वैकल्पिक अंत में कोशिश / पकड़ने के बाद बिना शर्त के निष्पादित होता है
निम्नलिखित के लिए सिंटैक्स है।
try {
// Code to run
[break;]
} catch ( e ) {
// Code to run if an exception occurs
[break;]
}[ finally {
// Code that is always executed regardless of
// an exception occurring
}]
उदाहरण
var a = 100;
var b = 0;
try {
if (b == 0 ) {
throw(“Divide by zero error.”);
} else {
var c = a / b;
}
}
catch( e ) {
console.log("Error: " + e );
}
उत्पादन
उपरोक्त कोड के सफल निष्पादन पर निम्नलिखित आउटपुट प्रदर्शित होते हैं।
Error: Divide by zero error
Note - नोट: आप एक फ़ंक्शन में एक अपवाद को बढ़ा सकते हैं और फिर आप उस फ़ंक्शन को या उसी फ़ंक्शन का उपयोग करके कॉलर फ़ंक्शन में कैप्चर कर सकते हैं try...catch खंड मैथा।
ऑनरर () विधि
onerrorईवेंट हैंडलर जावास्क्रिप्ट में त्रुटि से निपटने की सुविधा प्रदान करने वाला पहला फीचर था। जब भी पृष्ठ पर कोई अपवाद होता है, त्रुटि घटना को विंडो ऑब्जेक्ट पर निकाल दिया जाता है।
उदाहरण
<html>
<head>
<script type = "text/javascript">
window.onerror = function () {
document.write ("An error occurred.");
}
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type = "button" value = "Click Me" onclick = "myFunc();" />
</form>
</body>
</html>
उत्पादन
उपरोक्त कोड के सफल निष्पादन पर निम्नलिखित आउटपुट प्रदर्शित होते हैं।
ऑनरर इवेंट हैंडलर त्रुटि की सटीक प्रकृति की पहचान करने के लिए तीन टुकड़े प्रदान करता है -
Error message - वही संदेश जो ब्राउज़र दिए गए त्रुटि के लिए प्रदर्शित करेगा।
URL - वह फाइल जिसमें त्रुटि हुई।
Line number - दिए गए URL में लाइन नंबर जो त्रुटि का कारण बना।
निम्नलिखित उदाहरण से पता चलता है कि इस जानकारी को कैसे निकालना है।
उदाहरण
<html>
<head>
<script type = "text/javascript">
window.onerror = function (msg, url, line) {
document.write ("Message : " + msg );
document.write ("url : " + url );
document.write ("Line number : " + line );
}
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type = "button" value = "Click Me" onclick = "myFunc();" />
</form>
</body>
</html>
कस्टम त्रुटियां
जावास्क्रिप्ट कस्टम त्रुटियों की अवधारणा का समर्थन करता है। निम्नलिखित उदाहरण वही बताते हैं।
उदाहरण 1: डिफ़ॉल्ट संदेश के साथ कस्टम त्रुटि
function MyError(message) {
this.name = 'CustomError';
this.message = message || 'Error raised with default message';
}
try {
throw new MyError();
} catch (e) {
console.log(e.name);
console.log(e.message); // 'Default Message'
}
उपरोक्त कोड के सफल निष्पादन पर निम्नलिखित आउटपुट प्रदर्शित होते हैं।
CustomError
Error raised with default message
उदाहरण 2: उपयोगकर्ता द्वारा परिभाषित त्रुटि संदेश के साथ कस्टम त्रुटि
function MyError(message) {
this.name = 'CustomError';
this.message = message || 'Default Error Message';
} try {
throw new MyError('Printing Custom Error message');
}
catch (e) {
console.log(e.name);
console.log(e.message);
}
उपरोक्त कोड के सफल निष्पादन पर निम्नलिखित आउटपुट प्रदर्शित होते हैं।
CustomError
Printing Custom Error message