Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Async Deep Dive
  5. Q43. How do you handle errors in asynchronous JavaScript?
JavaScriptAsync Deep Dive

Q43. How do you handle errors in asynchronous JavaScript?

try-catch, catch method ও finally দিয়ে asynchronous error সামলানোর সঠিক উপায়।

Synchronous কোডে error ধরতে try...catch কাজ করে, কিন্তু asynchronous কোডে try...catch সবসময় কাজ করে না — কারণ callback তখনও আসেনি, অথচ try block ইতিমধ্যে শেষ হয়ে গেছে।

সাধারণ ভুলjavascript
javascript
// ❌ এভাবে কাজ করবে না
setTimeout(() => {
  throw new Error("কিছু ভুল হয়েছে");
}, 100);

try {
  // এখানে কিছু ঘটেনি, তাই catch কাজ করার কোনো সুযোগই নেই
  console.log("এই লাইন চলবে");
} catch (error) {
  console.log("এটা কখনো ছাপা হবে না");
}

// error হবে: Uncaught Error

সমস্যা হলো throw হওয়ার সময় try...catch block অনেক আগেই শেষ হয়ে গেছে। তাই catch কখনো কাজ করে না।

try-catch ঠিক জায়গায়javascript
javascript
// ✅ সঠিক উপায় — catch method ব্যবহার করা
setTimeout(() => {
  console.log("এই লাইন ছাপা হয়");
}, 100);

function risky() {
  throw new Error("কিছু ভুল হয়েছে");
}

setTimeout(() => {
  try {
    risky();
  } catch (error) {
    console.log("ধরা পড়েছে:", error.message);
  }
}, 100);

সবচেয়ে সুন্দর উপায় হলো async/await ব্যবহার করা, কারণ তখন try...catch স্বাভাবিকভাবেই কাজ করে।

async/await দিয়েjavascript
javascript
async function loadUser() {
  try {
    const response = await fetch("/api/user");

    if (!response.ok) {
      throw new Error("HTTP " + response.status);
    }

    const data = await response.json();
    return data;
  } catch (error) {
    console.error("ত্রুটি:", error.message);
    return null;
  } finally {
    console.log("যেকোনো অবস্থাতেই চলবে");
  }
}

ধাপে ধাপে — await fetch ইনপুট নেওয়া পর্যন্ত অপেক্ষা করে, await response.json() body পড়া পর্যন্ত অপেক্ষা করে। যেকোনো ধাপে error এলে সরাসরি catch block-এ চলে যায় এবং finally block সবসময় চলে।

একাধিক Promise-এ errorjavascript
javascript
// একটির ব্যর্থ হলে সব ব্যর্থ হিসেবে গণ্য হবে
const results = await Promise.allSettled([
  fetchUser(),
  fetchOrders(),
]);

for (const result of results) {
  if (result.status === "rejected") {
    console.log("কোনটা ব্যর্থ:", result.reason.message);
  }
}
catch methodjavascript
javascript
// async ফাংশনের নিজস্ব try-catch না থাকলে
// অপেক্ষা করার জায়গায় catch দিতে হয়
async function loadAll() {
  return Promise.all([loadUser(), loadOrders()]);
}

loadAll()
  .then(([user, orders]) => console.log(user, orders))
  .catch((error) => console.log("ধরা পড়েছে:", error.message));
fallback মানjavascript
javascript
// try-catch ছাড়া ও error ধরা যায়
async function loadSafely() {
  const user = await loadUser().catch((error) => {
    console.log("লোড হয়নি:", error.message);
    return null; // বাকি কাজ চালিয়ে যাওয়ার জন্য default মান
  });

  if (user) {
    console.log(user.name);
  }
}
global error listenerjavascript
javascript
// window event ও timer-এর error
window.addEventListener("error", (event) => {
  console.error("অপ্রত্যাশিত error:", event.message);
});

window.addEventListener("unhandledrejection", (event) => {
  console.error("অপেক্ষা করা ছিল না এমন Promise error:", event.reason);
});
return এর আগে throwjavascript
javascript
// ভুল: এখানে catch কাজ করবে না
async function bad() {
  return loadUser().then((user) => {
    throw new Error("ভুল হয়েছে");
  });
}

// ✅ সঠিক: catch বাইরে, তাই ধরা পড়ে
async function good() {
  const user = await loadUser();
  if (!user) throw new Error("ভুল হয়েছে");

  return user;
}
পরিস্থিতিtry...catch কাজ করবে?
await ব্যবহার করলেহ্যাঁ
setTimeout callback-এশুধু callback-এর ভেতরে
.then() chain-এনা, catch লাগবে
Promise.all-এনা, try-catch লাগবে
উপরের try block-এ না থাকলেনা
সতর্কতা

অনেকজন try...catch লিখে অপেক্ষা করে await দিতে ভুলে যান — ফলে error ধরা পড়ে না। আর catch খালি রেখে দিলে error চুপচাপ হারিয়ে যায়, যা ডিবাগ করা কঠিন করে তোলে; সবসময় অন্তত console.error দিয়ে লগ করুন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Async Deep Dive বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com