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. Error Handling
JavaScriptIntermediate

Error Handling

try/catch, throw, custom error, Error class, finally, unhandled rejection, সঠিক error মেসেজ — বাংলায়।

28টি অংশবাংলা ভাষায়

অ্যাপে error অনিবার্য — কিন্তু error-কে ঠিকমতো handle করা যায়। এই পর্বে try/catch, throw, custom error আর asynchronous error-এর কৌশল।

try/catch — বেসিক

try {
  const result = riskyOperation();
  console.log(result);
} catch (err) {
  console.error("ব্যর্থ:", err.message);
}

try-র ভেতরে error হলে বাকি try থামে, নিয়ন্ত্রণ catch-এ চলে। err.message-এ বিস্তারিত।

throw

function divide(a, b) {
  if (b === 0) {
    throw new Error("০ দিয়ে ভাগ করা যায় না");
  }
  return a / b;
}

try {
  console.log(divide(10, 0));
} catch (err) {
  console.error(err.message); // ০ দিয়ে ভাগ করা যায় না
}

throw new Error(...) নিজে error তৈরি করে। যেকোনো value throw করা যায়, তবে Error দিলে stack trace-সহ।

finally

try {
  await save(data);
} catch (err) {
  console.error("save ব্যর্থ");
} finally {
  setLoading(false);   // সফল/ব্যর্থ — দুই-ই চলে
}

finally try/catch-এর পরে সবসময় চলে — cleanup (loading বন্ধ, resource খোলা) এর জন্য।

Custom error

class ValidationError extends Error {
  constructor(field, message) {
    super(message);
    this.name = "ValidationError";
    this.field = field;
  }
}

try {
  throw new ValidationError("email", "ইমেইল ঠিক নয়");
} catch (err) {
  if (err instanceof ValidationError) {
    console.error(`[${err.field}] ${err.message}`);
  } else {
    console.error("অন্যান্য", err);
  }
}

Error-কে subclass করে domain-নির্দিষ্ট error বানানো যায় — instanceof দিয়ে আলাদা handling সহজ হয়।

Asynchronous error

// async function-এ
async function load() {
  try {
    const res = await fetch("/api/data");
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    const data = await res.json();
    return data;
  } catch (err) {
    console.error("লোড ব্যর্থ:", err.message);
    throw err;   // উপরেও জানাও (রি-থ্রো)
  }
}

// .then/catch chain-এ
fetch("/api/data")
  .then((res) => {
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return res.json();
  })
  .catch((err) => console.error(err.message));

async-এ error-ও promise reject-এ পরে — await-এtry/catch, chain-এ .catch()। throw err দিয়ে উপরের স্তরে জানানো যায়।

সঠিক error message

error message-কে ব্যবহারকারীর বোধে সহজ রাখুন — কোড-মানুষ যেটা বুঝবে না। কী হয়েছে ও কী করতে হবে — দুই-ই উল্লেখ ভালো।

function validateAge(age) {
  if (typeof age !== "number") {
    throw new TypeError("বয়স অবশ্যই সংখ্যা হতে হবে");
  }
  if (age < 0 || age > 150) {
    throw new RangeError("বয়স অবিশ্বাস্য (0–150 চান)");
  }
  return true;
}

try {
  validateAge("তিরিশ");
} catch (err) {
  console.error(err.name + ": " + err.message);  // TypeError: ...
}

built-in error ধরন: Error, TypeError, RangeError, ReferenceError, SyntaxError। appropriate ধরন বাছুন।

বিশ্বের সাথে মিলিয়ে

অনিয়ন্ত্রিত unhandled error ধরার ব্যবস্থা:

window.addEventListener("error", (e) => {
  console.error("window error:", e.message);
});

window.addEventListener("unhandledrejection", (e) => {
  console.error("unhandled promise:", e.reason);
});

window.onerror ও unhandledrejection দিয়ে খোঁজা-নাখোঁজা error বের হয় — production monitoring-এর শুরু।

ধরনব্যবহার
Errorসাধারণ
TypeErrorwrong type
RangeErrorসীমা-অতিরিক্ত
ReferenceErrorundefined variable
SyntaxErrorinvalid syntax
error গিলে শেষ না

catch-এ স্রেফ log করে ভান না — ঠিক কী করবেন ঠিক করুন: fallback, retry, ব্যবহারকারী-বার্তা, অথবা re-throw।

Interview

"TypeError ও RangeError পার্থক্য?" — type wrong (সংখ্যা=string) বনাম মান-সীমা (০–১৫০)। plus: async-এ কীভাবে handle — catch/rejection।

Practice

একটি JSON parse ফাংশন লিখুন যা invalid input-এ custom ParseError throw করে এবং caller ও এটির fallback দেখায়।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরWeakMap, WeakSet, Proxy, ReflectপরেরPractice Problems
এই পেজে
Tech Tutor

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

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

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

mdanamolhasan1998@gmail.com