try, catch, finally
try block mein risky code likhte ho. Agar error aaye, execution turant catch block mein jump karta hai (error object ke saath). finally block HAMESHA chalta hai — chahe error aaye ya na aaye — cleanup code ke liye perfect.
throw keyword se manually error "throw" (signal) kar sakte ho — new Error("message") ek standard error object banata hai, jisme .message aur .stack (debugging ke liye) properties hoti hain.
function divide(a, b) {
if (b === 0) {
throw new Error("Zero se divide nahi kar sakte!");
}
return a / b;
}
try {
console.log(divide(10, 2)); // 5
console.log(divide(10, 0)); // error throw hoga
console.log("Ye line kabhi nahi chalegi");
} catch (error) {
console.log("Error mila: " + error.message);
} finally {
console.log("Ye HAMESHA chalta hai, error aaye ya na aaye");
}
console.log("Program continue chal raha hai!"); // crash nahi hua- try = risky code, catch = handle karo, finally = hamesha chalta hai
- throw new Error("msg") = manually error signal karna
- Unhandled errors poori app crash kar sakte hain — try-catch protection deta hai
try-catch async/await ke saath perfectly kaam karta hai (jaise sync code), lekin Promise .then() chains ke saath .catch() use karna padta hai — try-catch async functions ke ANDAR hi kaam karta hai, .then() callbacks ke bahar nahi.
// async/await ke saath — try-catch directly kaam karta hai:
async function getData() {
try {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
return data;
} catch (error) {
console.log("Fetch failed: " + error.message);
}
}
// Promise chain ke saath — .catch() use karo:
fetch("https://api.example.com/data")
.then(response => response.json())
.catch(error => console.log("Fetch failed: " + error.message));Modern JavaScript mein catch (error) ke bina, sirf catch {} likh sakte ho — jab error object ki zaroorat na ho (sirf "kuch fail hua, handle karo" chahiye ho).
try {
JSON.parse("invalid json");
} catch { // error parameter skip kiya — allowed hai
console.log("Parsing fail hui, default value use karo");
}