এরর হতেই পারে! হয়তো ব্যবহারকারী ভুল ডেটা দিয়েছেন, একটি সার্ভার ডাউন আছে, বা একটি ফাংশন ভুল ইনপুট পেয়েছে।
প্রোগ্রাম ক্র্যাশ না করিয়ে সুন্দরভাবে এরর হ্যান্ডেল করতে জাভাস্ক্রিপ্ট দেয় try...catch ব্লক।
try {
// এমন কোড যা এরর থ্রো করতে পারে
} catch (error) {
// এরর হ্যান্ডেল করার কোড
}try {
let result = someUndefinedVariable + 10;
} catch (err) {
console.log("Something went wrong:", err.message);
}আউটপুট:
Something went wrong: someUndefinedVariable is not definedtry...catch ছাড়া, এই এরর আপনার বাকি জাভাস্ক্রিপ্ট কোড চলা বন্ধ করে দিত!
finally সবসময় চলে — এরর হোক বা না হোক।
try {
console.log("Trying something risky");
} catch (err) {
console.log("Error happened!");
} finally {
console.log("Always runs!");
}রিসোর্স পরিষ্কার করতে, ফাইল/কানেকশন বন্ধ করতে, বা স্টেট রিসেট করতে finally ব্যবহার করুন।
throw ব্যবহার করে আপনি ম্যানুয়ালি কাস্টম এরর থ্রো করতে পারেন।
function divide(a, b) {
if (b === 0) {
throw new Error("Cannot divide by zero");
}
return a / b;
}
try {
console.log(divide(10, 0));
} catch (err) {
console.log("Caught:", err.message);
}| এরর টাইপ | বিবরণ |
|---|---|
ReferenceError | ভেরিয়েবল নির্ধারিত নয় |
TypeError | ভুল টাইপ বা অবৈধ অপারেশন |
SyntaxError | অবৈধ জাভাস্ক্রিপ্ট সিনট্যাক্স |
RangeError | অনুমোদিত সীমার বাইরে সংখ্যা |
EvalError | eval() ফাংশনে এরর |
URIError | decodeURI()-এর মতো অবৈধ URI ফাংশন |
function validateAge(age) {
if (isNaN(age)) throw new Error("Age must be a number");
if (age < 18) throw new Error("You must be at least 18");
return true;
}
try {
validateAge("hello");
} catch (err) {
console.log("Validation error:", err.message);
}আপনি একটি এরর ধরতে পারেন, আংশিক হ্যান্ডেল করতে পারেন, এবং আবার থ্রো করতে পারেন।
try {
try {
throw new Error("Original error");
} catch (err) {
console.log("Logging:", err.message);
throw err; // আবার থ্রো করা হচ্ছে
}
} catch (e) {
console.log("Final catch:", e.message);
}async function fetchData() {
try {
let res = await fetch("https://invalid-url.com");
let data = await res.json();
} catch (error) {
console.log("Network or JSON error:", error.message);
}
}try...catch...finally ব্যবহার করুন।try...catch ব্লক লিখুন এবং এররটি আবার থ্রো করুন।try/catch দিয়ে একটি fetch() রিকোয়েস্টের এরর হ্যান্ডেল করুন।