This simple Express app has one route for the homepage. If you visit any other URL, the 404 handler sends a friendly message.
Express
import express from'express';
const app = express();
app.get('/', (req, res) => {
res.send('Welcome to the homepage!');
});
// 404 Not Found handler
app.use((req, res) => {
res.status(404).send('Oops! Page not found.');
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
OutputSuccess
Important Notes
Always place the 404 handler after all other routes.
Use res.status(404) to set the correct HTTP status code.
You can customize the message or render a page for better user experience.
Summary
A 404 handler catches requests to unknown pages.
It improves user experience by showing a clear message.
Place it last in your route list to work correctly.
Practice
(1/5)
1. What is the main purpose of a 404 Not Found handler in an Express app?
easy
A. To catch requests for routes that do not exist and respond with a message
B. To handle database connection errors
C. To log all incoming requests
D. To serve static files like images and CSS
Solution
Step 1: Understand what a 404 error means
A 404 error means the requested page or route was not found on the server.
Step 2: Role of the 404 handler in Express
The 404 handler catches these unknown routes and sends a clear message to the user.
Final Answer:
To catch requests for routes that do not exist and respond with a message -> Option A
Quick Check:
404 handler = catch unknown routes [OK]
Hint: 404 handler catches unknown routes last in middleware [OK]
Common Mistakes:
Confusing 404 handler with error handler for server errors
Placing 404 handler before route definitions
Using 404 handler to serve static files
2. Which of the following is the correct syntax to add a 404 handler in Express?
easy
A. app.route('*').get((req, res) => { res.status(404).send('Not Found'); });
B. app.get('/404', (req, res) => { res.send('Not Found'); });
C. app.use((req, res) => { res.status(404).send('Not Found'); });
D. app.use((err, req, res, next) => { res.status(404).send('Not Found'); });
Solution
Step 1: Identify the middleware signature for 404 handler
A 404 handler uses app.use with (req, res) parameters, no error parameter.
Step 2: Check each option's correctness
app.use((req, res) => { res.status(404).send('Not Found'); }); correctly uses app.use with (req, res) and sets status 404. app.get('/404', (req, res) => { res.send('Not Found'); }); is a route, not a catch-all. app.use((err, req, res, next) => { res.status(404).send('Not Found'); }); is an error handler (has err param). app.route('*').get((req, res) => { res.status(404).send('Not Found'); }); uses app.route('*') which is not standard for 404.
Final Answer:
app.use((req, res) => { res.status(404).send('Not Found'); }); -> Option C
Quick Check:
404 handler = app.use with (req, res) [OK]
Hint: 404 handler uses app.use with (req, res), no error param [OK]
Common Mistakes:
Using error handler signature (err, req, res, next) for 404
Defining 404 as a specific route like '/404'
Using app.route('*') incorrectly for 404
3. Given this Express code snippet, what will the server respond with when a user visits /unknown?