Build HTTP APIs with routing, middleware, validation, controllers, and error handling.
Lessons
Forward rejected promises to the error handler safely.
Handling Async Errors is easiest to learn by reading the example, changing it, and observing the result.
import express from 'express';
const app = express();
app.use(express.json());
app.get('/api/lessons/:id', (req, res, next) => {
const error = new Error('Lesson not found');
error.status = 404;
next(error); // forward to the error handler
});
// Central error handler - 4 arguments
app.use((err, req, res, next) => {
res.status(err.status || 500).json({ message: err.message });
});
app.listen(3000);Practice the Handling Async Errors example in a small scratch file, then explain what changed and why.