ExpressIntermediate
Express Error Handling
404 handling, error middleware, async errors, custom error class — Express বাংলায়।
12টি অংশবাংলা ভাষায়
ভালো API-এর জন্য error handling অপরিহার্য। Express-এ error handling-এর নির্দিষ্ট পদ্ধতি আছে।
404 Not Found Handler
const express = require("express");
const app = express();
// ... সব routes ...
// সব route-এর পরে 404 handle — এই middleware শেষে রাখতে হবে
app.use((req, res) => {
res.status(404).json({
success: false,
message: "এই route পাওয়া যায়নি",
path: req.originalUrl,
});
});Error-handling Middleware
Error middleware সাধারণ middleware-এর মতো, তবে 4টি parameter: (err, req, res, next)। 4 argument-এর উপস্থিতিই একে error handler হিসেবে চিনায়।
// Error handler middleware — শেষে রাখুন
app.use((err, req, res, next) => {
const status = err.status || 500;
const message = err.message || "Internal Server Error";
console.error("❌", err);
res.status(status).json({
success: false,
message,
stack: process.env.NODE_ENV === "production" ? undefined : err.stack,
});
});Custom Error Class
utils/AppError.jsjavascript
javascript
class AppError extends Error {
constructor(message, status = 500) {
super(message);
this.status = status;
this.name = "AppError";
}
}
module.exports = AppError;Async Error Handling
const AppError = require("./utils/AppError");
// ❌ এটা error throw করলেও catch হবে না
app.get("/data", async (req, res, next) => {
const data = await riskyFunction(); // reject হলে crash!
res.json(data);
});
// ✅ async wrapper দিয়ে
const asyncHandler = (fn) => (req, res, next) => {
Promise.resolve(fn(req, res, next)).catch(next);
};
app.get("/data", asyncHandler(async (req, res) => {
const data = await riskyFunction();
res.json(data);
}));try/catch দিয়েjavascript
javascript
app.post("/users", async (req, res, next) => {
try {
const user = await createUser(req.body);
res.status(201).json(user);
} catch (error) {
next(new AppError("User তৈরি করা যায়নি", 400));
}
});তক্তা
Production-এ stack trace কখনো client-কে দেখাবেন না — এটি sensitive তথ্য। ডেভেলপমেন্ট-এ শুধু দেখান।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।