← Back to TypeScript Course | Chapter 18: Error Handling | Lesson 1 of 5

Types के साथ try/catch

TypeScript JavaScript के try/catch mechanism का उपयोग करता है, लेकिन caught errors को सुरक्षित रूप से handle किया जाना चाहिए क्योंकि उनका type automatically पता नहीं होता। unknown उपयोग करना और instanceof से narrow करना reliable error-handling code लिखने में मदद करता है।
Syntax
typescript
try {
  // code that may throw
} catch (error: unknown) {
  // handle error
} finally {
  // cleanup
}

Basic try/catch

एक try block में code होता है जो fail हो सकता है, जबकि catch block जो भी exception throw हो उसे handle करता है — TypeScript में, caught value by default any के बजाय unknown के रूप में typed होता है, जो आपको इसे उपयोग करने से पहले check करने के लिए मजबूर करता है।

उदाहरण: Basic try/catch

typescript
try {
  throw new Error("Something broke");
} catch (err: unknown) {
  console.log(typeof err);
}

Narrowing an Error

एक unknown caught value को narrow किया जाना चाहिए — उदाहरण के लिए instanceof Error से — message जैसी properties access करने से पहले, क्योंकि TypeScript आपको बिना पहले यह prove किए कि उसका shape क्या है एक unknown value से properties पढ़ने नहीं देगा।

उदाहरण: Narrowing an Error

typescript
try {
  throw new Error("Failed");
} catch (err: unknown) {
  if (err instanceof Error) {
    console.log(err.message);
  }
}

Handling Unknown Thrown Values

JavaScript literally कुछ भी throw करने देता है, सिर्फ Error objects नहीं, इसलिए TypeScript code को कभी यह assume नहीं करना चाहिए कि एक caught value बिना check किए एक Error है — एक thrown string या plain object पूरी तरह legal JavaScript है।

उदाहरण: Handling Unknown Thrown Values

typescript
try {
  throw "just a string";
} catch (err: unknown) {
  if (typeof err === "string") {
    console.log("String thrown:", err);
  } else if (err instanceof Error) {
    console.log("Error thrown:", err.message);
  }
}

Typed Error Handling Helpers

एक छोटा helper function किसी भी caught value को एक readable message में बदलने के logic को centralize कर सकता है, narrowing boilerplate को app में हर catch block पर repeat करने के बजाय एक जगह रखते हुए।

उदाहरण: Typed Error Handling Helpers

typescript
function toMessage(err: unknown): string {
  if (err instanceof Error) return err.message;
  if (typeof err === "string") return err;
  return "Unknown error";
}
try {
  throw new Error("Oops");
} catch (err) {
  console.log(toMessage(err));
}

Best Practices

Caught values को unknown मानें, उन्हें उपयोग करने से पहले narrow करें, और हमेशा उस case के लिए एक sensible fallback message दें जहां thrown value एक standard Error नहीं है — यह badly-behaved third-party code के साथ भी error handling को predictable रखता है।

उदाहरण: Best Practices

typescript
function toMessage(err: unknown): string {
  return err instanceof Error ? err.message : "Something went wrong";
}
try {
  throw { weird: "object" };
} catch (err) {
  console.log(toMessage(err));
}
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. catch (err: Error) लिखना, जो allowed नहीं है क्योंकि एक catch variable सिर्फ any या unknown हो सकता है।
  2. जब err unknown हो तब बिना narrow किए err.message उपयोग करना।
  3. एक empty catch {} से errors को swallow करना, इसलिए failures silently गायब हो जाती हैं।
🔒

Chapter Quiz — Complete all 5 topics to unlock

0/5 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.