जावास्क्रिप्ट एरर - थ्रो और ट्राय टू कैच

try बयान आपको कोड ब्लॉक के अंदर त्रुटि को परीक्षण करने की अनुमति देता है।

catch बयान आपको त्रुटि को हल करने की अनुमति देता है।

throw वाक्यांश आपको अनुकूलित त्रुटि बनाने की अनुमति देता है。

finally आपको त्रुटि को हल करने के बाद भी कोड को चलाने की अनुमति देता है, चाहे परिणाम कितना भी हो।

त्रुटियाँ हमेशा होती हैं!

जब जावास्क्रिप्ट कोड चलाया जाता है, तो विभिन्न त्रुटियाँ होती हैं।

त्रुटि कोडर के दोष, गलत इनपुट के कारण होने वाली त्रुटि या अन्य अपर्याप्त शास्त्रीय समस्याओं के कारण हो सकती है।

इंस्टांस

इस उदाहरण में, हम द्वारा adddlert एक त्रुटि को जानबूझकर बनाने के लिए चेतावनी कोड लिखें:

<p id="demo"></p>
<script>
try {
    adddlert("स्वागत करें!");
}
catch(err) {
    document.getElementById("demo").innerHTML = err.message;
}
</script>

स्वयं को प्रयोग करें

जावास्क्रिप्ट एडडलर्ट को एक त्रुटि के रूप में पकड़ता है और त्रुटि को हल करने के लिए कोड चलाता है。

जावास्क्रिप्ट ट्राय और कैच

try बयान आपको एक कोड ब्लॉक परिभाषित करने की अनुमति देता है ताकि इसे चलाते समय त्रुटियाँ पाई जा सकें।

catch बयान आपको एक ऐसा कोड ब्लॉक परिभाषित करने की अनुमति देता है जो यदि try कोड ब्लॉक में त्रुटि होगी तो चलाया जाए।

जेसक्रिप्ट स्टेटमेंट try और catch साथ-साथ दिखाई देते हैं:

try {
     परीक्षण के लिए कोड ब्लॉक
}
 catch(err) {
     त्रुटि को हल करने वाला कोड ब्लॉक
} 

जावास्क्रिप्ट एक त्रुटि फेंकता है

त्रुटि होने पर JavaScript आमतौर पर रुकता है और त्रुटि संदेश उत्पन्न करता है।

इस तकनीकी शब्द का वर्णन इस तरह किया जाता है:JavaScript अचानक (त्रुटि) फेंक सकता है (त्रुटि फेंक सकता है)

JavaScript वास्तव में दो गुणों वाला अचानक (त्रुटि) बना सकता है Error ऑब्जैक्ट:name और message

throw वाक्यांश

throw वाक्यांश आपको अनुकूलित त्रुटि बनाने की अनुमति देता है。

टेक्निकल रूप से आपअचानक (त्रुटि) फेंकें (त्रुटि फेंकें)

अचानक हो सकता है JavaScript चरिंता, संख्या, बूल या ऑब्जैक्ट हो सकता है:

throw "Too big";    // टेक्स्ट फेंकें
throw 500;          // संख्या फेंकें

अगर throw साथ try और catch साथ मिलकर, यह प्रोग्राम की प्रवाह को नियंत्रित कर सकता है और अनुकूलित त्रुटि संदेश बना सकता है。

इनपुट वेरिफिकेशन का मामला

इस उदाहरण में इनपुट की जांच की जाएगी। यदि मान गलत है, तो त्रुटि (err) फेंकी जाएगी。

इस अचानक (err) को कैच वाक्यांश द्वारा पकड़ा जाता है और एक अनुकूलित त्रुटि संदेश दिखाया जाता है:

<!DOCTYPE html>
<html>
<body>
<p>5 - 10 के बीच की संख्या भरें:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">इनपुट को परीक्षण करें</button>
<p id="message"></p>
<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "") throw "खाली";
         if(isNaN(x)) throw "यह नंबर नहीं है";
         x = Number(x);
        if(x < 5) throw  "बहुत छोटा";
        if(x > 10) throw "बहुत बड़ा";
    }
    catch(err) {
        message.innerHTML = "इनपुट है " + err;
    }
}
</script>
</body>
</html> 

स्वयं को प्रयोग करें

HTML वेरिफिकेशन

इस कोड केवल एक उदाहरण है।

समयार्थक ब्राउज़र आमतौर पर JavaScript को निर्धारित HTML वेरिफिकेशन के साथ जोड़ते हैं, HTML गुणों में परिभाषित अग्रिम वेरिफिकेशन नियमों के जरिए:

<input id="demo" type="number" min="5" max="10" step="1">

आप इस अध्याय में बाद में फॉर्म वेरिफिकेशन के बारे में अधिक जानेंगे。

finally वाक्यांश

finally इस वाक्यांश को प्रयास और कैच के बाद कोड को चलाने की अनुमति है, फलस्वरूप किसी भी वाले:

try {
     // परीक्षण के लिए कोड ब्लॉक
}
 catch(err) {
     // त्रुटि का संभालन करने वाला कोड ब्लॉक
} 
finally {
     // फलस्वरूप किसी भी वाले कोड ब्लॉक को चलाता है
}

इंस्टांस

function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "") throw "खाली है";
        if(isNaN(x)) throw "यह नंबर नहीं है";
         x = Number(x);
        if(x >  10) throw "बहुत बड़ा";
        if(x <  5) throw "बहुत छोटा";
    }
    catch(err) {
        message.innerHTML = "त्रुटि: " + err + ".";
    }
    finally {
        document.getElementById("demo").value = "";
    }
}

स्वयं को प्रयोग करें

Error ऑब्जैक्ट

जेवेस्क्रिप्ट त्रुटि होने पर त्रुटि संदेश प्रदान करने के लिए बीटी ऑब्जैक्ट का अंतर्निहित error ऑब्जैक्ट है。

error ऑब्जैक्ट दो उपयोगी विशेषताएँ प्रदान करता है:name और message

Error ऑब्जैक्ट विशेषताएँ

विशेषता वर्णन
name सेट या वापस करें (एक तार्किक शब्द) से त्रुटि नाम
message सेट या वापस करें (एक तार्किक शब्द) से त्रुटि संदेश (एक शब्द-शृंखला)

Error Name Values

error की name विशेषता छह अलग-अलग मूल्य वापस देती है:

एरर नाम वर्णन
EvalError eval() फ़ंक्शन में हुई त्रुटि
RangeError संख्या दायरे से बाहर की त्रुटि हुई
ReferenceError अवैध उपहार हुई
SyntaxError वाक्यांश त्रुटि हुई
TypeError टाइप त्रुटि हुई
URIError encodeURI() में हुई त्रुटि

आपको इन छह अलग-अलग मूल्यों के बारे में विस्तार से बताया जाएगा。

Eval त्रुटि

EvalError eval() फ़ंक्शन के भीतर की त्रुटियों को फेंक नहीं देता

नवीनतम संस्करण के JavaScript में कोई भी EvalErrorकृपया SyntaxError स्थानांतरित

दायरा त्रुटि

RangeError यह आप वैध रंग के बाहर के नंबर का उपयोग करने पर फेंक दी जाएगी。

उदाहरण: आप नंबर के वैध अंकों को 500 में सेट नहीं कर सकते。

इंस्टांस

var num = 1;
try {
    num.toPrecision(500);   // संख्या 500 से अधिक वैध अंकों का नहीं हो सकता
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

स्वयं को प्रयोग करें

उपहार त्रुटि

यदि आप अभी तक घोषित न किए गए वेरियेबल का उपयोग (उपहार) करते हैं, तो ReferenceError इस तरह फेंक दी जाएगी:

इंस्टांस

var x;
try {
    x = y + 1;   // y उपयोग किया नहीं जा सकता (उपयोग किया जाता है)
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

स्वयं को प्रयोग करें

वाक्यांश त्रुटि

यदि आप वाक्यांश त्रुटि वाला कोड गणना करते हैं, तो SyntaxError उत्पन्न:

इंस्टांस

try {
    eval("alert('Hello')");   // ' के अभाव में त्रुटि होगी
}
catch(err) {
     document.getElementById("demo").innerHTML = err.name;
} 

स्वयं को प्रयोग करें

टाइप त्रुटि

यदि आप उस तरीके का उपयोग कर रहे हैं जो आशानुसार के रंग के बाहर है, तो TypeError उत्पन्न:

इंस्टांस

var num = 1;
try {
    num.toUpperCase();   // आप नंबर को ऊपरी अक्षर में नहीं बदल सकते हैं
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

स्वयं को प्रयोग करें

URI त्रुटि

अगर आप URI फ़ंक्शन में अवैध अक्षरों का इस्तेमाल करें तो URIError उत्पन्न:

इंस्टांस

try {
    decodeURI("%%%");   // आप इन प्रतिकरणों को URI एनकोडिंग नहीं कर सकते हैं
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

स्वयं को प्रयोग करें

असामान्य Error ऑब्जेक्ट गुण

Mozilla और Microsoft ने असामान्य error ऑब्जेक्ट गुणों को परिभाषित किया है:

  • fileName (Mozilla)
  • lineNumber (Mozilla)
  • columnNumber (Mozilla)
  • stack (Mozilla)
  • description (Microsoft)
  • number (Microsoft)

ये गुणों को सार्वजनिक वेबसाइट पर नहीं इस्तेमाल करें।ये सभी ब्राउज़र में काम नहीं करेंगे。