जावास्क्रिप्ट में त्रुटि प्रबंधन

जावास्क्रिप्ट में त्रुटि प्रबंधन

यह लेख जावास्क्रिप्ट में त्रुटि प्रबंधन की व्याख्या करता है।

YouTube Video

जावास्क्रिप्ट में त्रुटि प्रबंधन

जावास्क्रिप्ट में त्रुटि प्रबंधन एक महत्वपूर्ण सुविधा है, जो प्रोग्राम में अप्रत्याशित समस्याएं आने पर त्रुटियों को पकड़ने और सही तरीके से प्रबंधित करने के लिए है। मुख्य रूप से, त्रुटियों को पकड़ने और प्रबंधित करने के लिए try...catch सिंटैक्स का उपयोग सामान्य है। इसके अलावा, Promises या असिंक्रोनस ऑपरेशनों के मामले में, त्रुटि प्रबंधन async/await या Promise.prototype.catch का उपयोग करके भी किया जा सकता है।

try...catch सिंटैक्स

try...catch का उपयोग कोड ब्लॉक के भीतर त्रुटियां होने पर उन्हें पकड़ने और प्रबंधित करने के लिए किया जाता है।

 1try {
 2    // Code that may throw an error
 3    let result = riskyFunction();
 4    console.log(result);
 5} catch (error) {
 6    // Catch and handle the error
 7    console.error("An error occurred:", error.message);
 8} finally {
 9    // Code that will always execute
10    console.log("Error handling has completed.");
11}
  • यदि किसी try ब्लॉक के अंदर त्रुटि होती है, तो प्रोग्राम का निष्पादन रुक जाता है और catch ब्लॉक निष्पादित होता है।
  • finally ब्लॉक हमेशा निष्पादित होता है, चाहे त्रुटि हो या न हो। यह संसाधनों को मुक्त करने और अंतिम प्रक्रिया जैसी चीजों के लिए उपयोगी है।

त्रुटि उत्पन्न करना (throw)

जावास्क्रिप्ट में, आप throw कीवर्ड का उपयोग करके स्पष्ट रूप से त्रुटि उत्पन्न कर सकते हैं। इसे कस्टम त्रुटि संदेश या कस्टम त्रुटियां उत्पन्न करने के लिए उपयोग किया जाता है।

 1function checkAge(age) {
 2    if (age < 18) {
 3        throw new Error("You are under 18 years old.");
 4    }
 5    return "Age verification completed.";
 6}
 7
 8try {
 9    let result = checkAge(15);
10    console.log(result);
11} catch (error) {
12    console.error(error.message);  // Displays "You are under 18 years old."
13}

असिंक्रोनस ऑपरेशनों में त्रुटि प्रबंधन (Promise और async/await)

जब असिंक्रोनस ऑपरेशन करते हैं, तो त्रुटि प्रबंधन थोड़ा अलग होता है। Promises का उपयोग करते समय, त्रुटियों को catch मेथड के साथ पकड़ा जाता है।

1let promise = new Promise((resolve, reject) => {
2    // Asynchronous operation
3    setTimeout(() => reject(new Error("An issue has occurred!")), 1000);
4});
5
6promise
7    .then(result => console.log(result))
8    .catch(error => console.error(error.message));  // Displays "An issue has occurred!"

async/await का उपयोग करके असिंक्रोनस ऑपरेशन करते समय, आप try...catch के साथ त्रुटियों को प्रबंधित कर सकते हैं।

 1async function fetchData() {
 2    try {
 3        let response = await fetch('https://api.example.com/data');
 4        let data = await response.json();
 5        console.log(data);
 6    } catch (error) {
 7        console.error("An error occurred while fetching data:", error.message);
 8    }
 9}
10
11fetchData();

सारांश

  • आप try...catch सिंटैक्स का उपयोग करके सिंक्रोनस त्रुटियों को पकड़ सकते हैं।
  • आप throw का उपयोग करके अपने स्वयं के त्रुटियों को उत्पन्न कर सकते हैं।
  • असिंक्रोनस ऑपरेशनों में त्रुटियों को Promise के catch मेथड, या async/await और try...catch का उपयोग करके प्रबंधित किया जा सकता है।

इन तरीकों का उपयोग करके, आप सुनिश्चित कर सकते हैं कि त्रुटियां होने पर भी आपका प्रोग्राम सही ढंग से कार्य करता है।

Error

Error क्लास का उपयोग त्रुटि प्रबंधन के लिए किया जाता है। यह त्रुटियां बनाने और त्रुटि संदेश तथा स्टैक ट्रेस प्रदान करने की क्षमता प्रदान करता है।

1try {
2    throw new Error("Something went wrong");
3} catch (e) {
4    console.log(e.message); // Something went wrong
5}

मूल उपयोग

जब कोई त्रुटि होती है, तो Error ऑब्जेक्ट को स्पष्ट रूप से बनाया जा सकता है। आप new Error() के साथ एक उदाहरण बनाते हैं और एक त्रुटि संदेश पास करते हैं।

1const error = new Error("Something went wrong");
2console.log(error.message);  // "Something went wrong"
3console.log(error.name);     // "Error"
4console.log(error.stack);    // Stack trace (information about where the error occurred)

throw के साथ त्रुटियाँ फेंकना

जावास्क्रिप्ट में, आप throw कीवर्ड का उपयोग करके त्रुटि फेंक सकते हैं। यह विशिष्ट स्थितियों में प्रोसेसिंग को बाधित करने और नियंत्रण को त्रुटि हैंडलर को पास करने के लिए उपयोग किया जाता है।

1function doSomething() {
2    throw new Error("This function is not yet implemented");
3}
4
5try {
6    doSomething();
7} catch (e) {
8    console.error(e.message);  // "This function is not yet implemented"
9}

throw के साथ फेंकी गई त्रुटियों को try...catch सिंटैक्स का उपयोग करके पकड़ा जा सकता है।

कस्टम त्रुटियाँ बनाना

जावास्क्रिप्ट में, आप Error क्लास को बढ़ाकर अपनी खुद की कस्टम त्रुटियाँ बना सकते हैं। यह आपको विशेष स्थितियों के अनुसार त्रुटियों को तैयार करने की अनुमति देता है।

 1class CustomError extends Error {
 2    constructor(message) {
 3        super(message);  // Call the parent class constructor
 4        this.name = "CustomError";  // Set the error name
 5    }
 6}
 7
 8try {
 9    throw new CustomError("A custom error has occurred");
10} catch (e) {
11    console.error(e.name);    // "CustomError"
12    console.error(e.message); // "A custom error has occurred"
13}

बिल्ट-इन त्रुटि क्लासेस

जावास्क्रिप्ट में कई बिल्ट-इन त्रुटि क्लासेस हैं जो Error क्लास को बढ़ाती हैं। इन्हें विशिष्ट त्रुटियों का प्रतिनिधित्व करने के लिए उपयोग किया जाता है।

  • ReferenceError: तब होता है जब आप किसी ऐसे वेरिएबल को संदर्भित करते हैं जो मौजूद नहीं है।
  • TypeError: तब होता है जब किसी मान का प्रकार अपेक्षित प्रकार से भिन्न होता है।
  • RangeError: तब होता है जब कोई संख्या अनुमत सीमा से बाहर होती है।
  • SyntaxError: तब होता है जब सिंटैक्टिक रूप से गलत कोड निष्पादित किया जाता है।
  • EvalError: eval() फ़ंक्शन के उपयोग से संबंधित त्रुटियाँ। आजकल इसका शायद ही उपयोग होता है।
  • URIError: तब होता है जब एक अवैध URI (एन्कोडिंग या डिकोडिंग त्रुटियाँ) का उपयोग होता है।
उदाहरण: ReferenceError

यहाँ ReferenceError का एक उदाहरण है।

1try {
2    console.log(undefinedVariable);  // Undefined variable
3} catch (e) {
4    console.error(e.name);    // "ReferenceError"
5    console.error(e.message); // "undefinedVariable is not defined"
6}
उदाहरण: TypeError

यहाँ TypeError का एक उदाहरण है।

1try {
2    null.f();  // Attempting to call a function on null
3} catch (e) {
4    console.error(e.name);    // "TypeError"
5    console.error(e.message); // "Cannot read properties of null (reading 'f')"
6}

finally ब्लॉक

try...catch सिंटैक्स में, उन कार्यों के लिए finally ब्लॉक का उपयोग करें जिन्हें आप त्रुटि होने या न होने के बावजूद निष्पादित करना चाहते हैं।

1try {
2    throw new Error("An issue has occurred");
3} catch (e) {
4    console.error(e.message);  // "An issue has occurred"
5} finally {
6    console.log("Performing cleanup");
7}

इस उदाहरण में, finally ब्लॉक में संचालन एकत्रित किए जाते हैं, भले ही एक त्रुटि फेंकी जाए।

Error ऑब्जेक्ट के गुण

Error ऑब्जेक्ट के निम्नलिखित गुण होते हैं।

  • message: यह त्रुटि संदेश है।
  • name: त्रुटि का नाम, जिसका डिफ़ॉल्ट "Error" होता है।
  • stack: एक स्टैक ट्रेस जिसमें दिखाया गया है कि त्रुटि कहाँ हुई, डिबगिंग के लिए उपयोगी।

अपवाद प्रबंधन के लाभ

त्रुटि प्रबंधन को सही तरीके से लागू करके, आप अनुप्रयोग को अप्रत्याशित व्यवहार होने पर क्रैश होने से रोक सकते हैं। try...catch सिंटैक्स और त्रुटि ऑब्जेक्ट्स का सही ढंग से उपयोग करके, आप अधिक मजबूत कोड लिख सकते हैं।

 1function divide(a, b) {
 2    if (b === 0) {
 3        throw new Error("Cannot divide by zero");
 4    }
 5    return a / b;
 6}
 7
 8try {
 9    console.log(divide(4, 0));  // An error will occur
10} catch (e) {
11    console.error(e.message);   // "Cannot divide by zero"
12}

सारांश

  • Error क्लास का उपयोग एक त्रुटि कारण को दर्शाने और त्रुटि प्रबंधन करने के लिए किया जाता है।
  • try...catch...finally सिंटैक्स का उपयोग त्रुटियों को संभालने और अनपेक्षित अनुप्रयोग समाप्ति को रोकने के लिए करें।
  • Error क्लास को विस्तारित करके कस्टम त्रुटियां बनाना भी संभव है।
  • आप TypeError और ReferenceError जैसी इनबिल्ट त्रुटि क्लासेस का उपयोग करके विभिन्न प्रकार की त्रुटियों को संभाल सकते हैं।

आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।

YouTube Video