# try/catch और कस्टम एरर — जावास्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/javascript/js-error-handling

> विफलताओं को शालीनता से पकड़ना, और अपने खुद के एरर टाइप बनाना।

## try / catch / finally

`try` का कोड पहले चलता है; त्रुटि आने पर `catch` उसे संभालता है; `finally` हमेशा चलता है, त्रुटि हो या न हो।

```js
try {
  JSON.parse("{ invalid json");
} catch (err) {
  console.log("Failed:", err.message);
} finally {
  console.log("Always runs");
}
```

## एरर throw करना

`throw` से आप खुद एरर उठाते हैं, जो सामान्य execution को तब तक रोकता है जब तक कोई उसे न पकड़े।

```js
function divide(a, b) {
  if (b === 0) throw new Error("Cannot divide by zero");
  return a / b;
}
try {
  divide(10, 0);
} catch (err) {
  console.log(err.message);  // Cannot divide by zero
}
```

## कस्टम एरर क्लास

अपने खुद के, ज़्यादा वर्णनात्मक एरर टाइप बनाने के लिए built-in `Error` क्लास को extend करें।

```js
class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = "ValidationError";
  }
}
throw new ValidationError("Invalid input");
```

## ख़ास तरीके से catch करें

अलग-अलग एरर टाइप को अलग तरह संभालने के लिए `err.name` जाँचें या `instanceof` उपयोग करें, बजाय एक जनरल catch-all के।
