Types के साथ try/catch
In this page:
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
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
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
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
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
function toMessage(err: unknown): string {
return err instanceof Error ? err.message : "Something went wrong";
}
try {
throw { weird: "object" };
} catch (err) {
console.log(toMessage(err));
}
catch (err: Error)लिखना, जो allowed नहीं है क्योंकि एक catch variable सिर्फanyयाunknownहो सकता है।- जब
errunknownहो तब बिना narrow किएerr.messageउपयोग करना। - एक empty
catch {}से errors को swallow करना, इसलिए failures silently गायब हो जाती हैं।
Chapter Quiz — Complete all 5 topics to unlock
0/5 topics done
Complete these topics first: