टाइपस्क्रिप्ट त्रुटि प्रबंधन शुरुआती गाइड

किसी भी प्रोग्रामिंग भाषा में प्रभावी त्रुटि प्रबंधन महत्वपूर्ण है, और टाइपस्क्रिप्ट इसका अपवाद नहीं है। उचित त्रुटि प्रबंधन अप्रत्याशित स्थितियों को सुंदर ढंग से प्रबंधित करके मजबूत और विश्वसनीय एप्लिकेशन बनाने में मदद करता है। यह मार्गदर्शिका टाइपस्क्रिप्ट में त्रुटि प्रबंधन की मूल बातें कवर करेगी और शुरुआती लोगों के लिए व्यावहारिक उदाहरण प्रदान करेगी।

टाइपस्क्रिप्ट में त्रुटियों को समझना

जावास्क्रिप्ट की तरह ही टाइपस्क्रिप्ट में भी त्रुटियाँ रनटाइम या संकलन-समय के दौरान होती हैं। टाइपस्क्रिप्ट टाइप सुरक्षा प्रदान करता है जो संकलन समय पर कई संभावित समस्याओं को पकड़ सकता है, लेकिन रनटाइम त्रुटियों को अभी भी ठीक से प्रबंधित करने की आवश्यकता है।

try और catch के साथ मूल त्रुटि प्रबंधन

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

try और catch का उदाहरण

function divide(a: number, b: number): number {
  try {
    if (b === 0) {
      throw new Error("Cannot divide by zero");
    }
    return a / b;
  } catch (error) {
    console.error(error.message);
    return NaN; // Return NaN to indicate an error
  }
}

console.log(divide(10, 2)); // Output: 5
console.log(divide(10, 0)); // Output: Cannot divide by zero

इस उदाहरण में, divide फ़ंक्शन दो संख्याओं को विभाजित करने का प्रयास करता है। यदि विभाजक शून्य है, तो एक त्रुटि फेंकी जाती है और catch ब्लॉक द्वारा पकड़ी जाती है, जो एक त्रुटि संदेश लॉग करता है।

कस्टम त्रुटि प्रकार

टाइपस्क्रिप्ट आपको विशिष्ट त्रुटि स्थितियों को बेहतर ढंग से दर्शाने के लिए कस्टम त्रुटि प्रकार परिभाषित करने की अनुमति देता है। कस्टम त्रुटि प्रकार त्रुटियों को वर्गीकृत करने और उन्हें अधिक प्रभावी ढंग से संभालने में मदद करते हैं।

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

class DivisionError extends Error {
  constructor(message: string) {
    super(message);
    this.name = "DivisionError";
  }
}

function divide(a: number, b: number): number {
  try {
    if (b === 0) {
      throw new DivisionError("Cannot divide by zero");
    }
    return a / b;
  } catch (error) {
    if (error instanceof DivisionError) {
      console.error(`Custom Error: ${error.message}`);
    } else {
      console.error("An unexpected error occurred");
    }
    return NaN; // Return NaN to indicate an error
  }
}

console.log(divide(10, 2)); // Output: 5
console.log(divide(10, 0)); // Output: Custom Error: Cannot divide by zero

यहाँ, हम एक कस्टम त्रुटि वर्ग DivisionError परिभाषित करते हैं जो अंतर्निहित Error वर्ग का विस्तार करता है। हम अधिक विशिष्ट त्रुटि प्रबंधन प्रदान करने के लिए divide फ़ंक्शन में इस कस्टम त्रुटि का उपयोग करते हैं।

instanceof के साथ टाइप गार्डिंग

instanceof जैसे प्रकार गार्ड, catch ब्लॉक में त्रुटि ऑब्जेक्ट के प्रकार को सीमित करने में मदद करते हैं, जिससे आप विभिन्न त्रुटि प्रकारों को अलग-अलग तरीके से संभाल सकते हैं।

टाइप गार्डिंग का उदाहरण

function processInput(input: string | number) {
  try {
    if (typeof input === "string") {
      console.log(input.toUpperCase());
    } else {
      throw new Error("Input must be a string");
    }
  } catch (error) {
    if (error instanceof Error) {
      console.error(`Error: ${error.message}`);
    } else {
      console.error("An unknown error occurred");
    }
  }
}

processInput("hello"); // Output: HELLO
processInput(42); // Output: Error: Input must be a string

यह उदाहरण catch ब्लॉक में टाइप गार्डिंग को प्रदर्शित करता है, ताकि यह सुनिश्चित किया जा सके कि त्रुटि ऑब्जेक्ट Error का उदाहरण है, जिससे सटीक त्रुटि प्रबंधन संभव हो सके।

सफाई के लिए finally का उपयोग करना

finally ब्लॉक का उपयोग कोड निष्पादित करने के लिए किया जा सकता है जो बिना किसी त्रुटि के चलाए जाना चाहिए। यह फ़ाइलों को बंद करने या संसाधनों को जारी करने जैसे क्लीनअप ऑपरेशन के लिए उपयोगी है।

finally के साथ उदाहरण

function readFile(filePath: string): string {
  try {
    // Simulate reading a file
    if (filePath === "") {
      throw new Error("File path cannot be empty");
    }
    return "File content";
  } catch (error) {
    console.error(`Error: ${error.message}`);
    return "";
  } finally {
    console.log("Cleanup: Closing file");
  }
}

console.log(readFile("path/to/file")); // Output: File content
console.log(readFile("")); // Output: Error: File path cannot be empty
                            //         Cleanup: Closing file

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

निष्कर्ष

विश्वसनीय TypeScript एप्लिकेशन बनाने के लिए प्रभावी त्रुटि प्रबंधन महत्वपूर्ण है। try और catch, कस्टम त्रुटि प्रकार, प्रकार की सुरक्षा और finally का उपयोग करके, आप त्रुटियों को अधिक प्रभावी ढंग से प्रबंधित कर सकते हैं और सुनिश्चित कर सकते हैं कि आपका एप्लिकेशन अप्रत्याशित परिस्थितियों में भी पूर्वानुमानित तरीके से व्यवहार करे।

इन तकनीकों से आप त्रुटियों को सुंदर तरीके से संभाल सकते हैं और अपने TypeScript कोड की मजबूती में सुधार कर सकते हैं। TypeScript त्रुटि प्रबंधन में कुशल बनने और अधिक लचीले एप्लिकेशन लिखने के लिए इन अवधारणाओं का अभ्यास करें।

लिंक
TypeScript