🕳️
Error Handling & Debugging

404 Handler

Catch-all Route Sabse Aakhir mein
💡 404 handler DUKAAN ka LAST counter hai jahan likha hai "jo aapko dhoondh rahe the wo yahan nahi milta" — jab poori building mein kahin match nahi mila, tabhi customer yahan pahunchta hai.

Agar koi route match nahi hota to Express ka default handler EK plain HTML 404 bhej deta hai. API ke liye ye theek nahi — client JSON expect karta hai, use HTML milta hai.

Custom 404 ke liye SAARE routes ke BAAD ek catch-all middleware lagao. Ye error handler se PEHLE aur routes ke BAAD hona chahiye — order galat hua to ya sab kuch 404 ho jaayega ya 404 handler chalega hi nahi.

app.use("/api", apiRoutes);

app.use((req, res, next) => {                   // routes ke BAAD
  res.status(404).json({ error: "Route not found", path: req.originalUrl });
});

app.use(errorHandler);                          // error handler sabse aakhir
🕳️
404 handler DUKAAN ka LAST counter hai jahan likha hai "jo aapko dhoondh rahe the wo yahan nahi milta" — jab poori building mein kahin match nahi mila, tabhi customer yahan pahunchta hai.
1 / 2
⚡ Quick Recap
  • Default Express 404 HTML deta hai — API ke liye custom JSON 404 banao
  • Catch-all middleware saare routes ke BAAD, error handler se PEHLE
  • app.use() form har method cover karta hai, app.get("*") sirf GET
On this page (2 subtopics)

404 middleware ko SAARE routes ke baad aur error handler se pehle lagana chahiye. Agar galti se pehle laga diya, to har request wahin ruk jaayegi aur asli routes kabhi nahi chalenge — ye ek bahut common beginner bug hai.

app.use("/api/users", usersRouter);
app.use("/api/orders", ordersRouter);

app.use((req, res) => res.status(404).json({
  error: "Not Found", method: req.method, path: req.originalUrl,
}));
app.use(errorHandler);

Ek hi app mein API aur web pages dono hon to 404 ka format request ke hisaab se badalna chahiye — API clients JSON expect karte hain, browsers HTML. req.accepts() se ye decide kiya ja sakta hai.

app.use((req, res) => {
  res.status(404);
  if (req.accepts("html")) return res.render("404", { url: req.originalUrl });
  res.json({ error: "Not Found" });
});