📍 1. What is Error Handling?
A: Error handling is the process of catching, logging, and responding to runtime errors or exceptions during request processing to prevent server crashes and provide clear feedback to clients—like validation fails or DB timeouts. It keeps your app robust and user-friendly.
📍 2. Built-in Error Handling
⦁ Express auto-catches sync errors in routes, but async needs extra care.
⦁ Example:
app.get('/error', (req, res) => {
throw new Error('Something went wrong!');
});This triggers the default handler or your custom one—logs to console by default.
📍 3. Custom Error-handling Middleware
⦁ Define with 4 params (err, req, res, next) and place it last in your middleware chain.
⦁ Example:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({
success: false,
message: err.message || 'Internal Server Error'
});
});In dev mode, include stack traces; hide them in prod for security.
📍 4. Try-Catch in Async Functions
⦁ Wrap async code in try-catch and pass errors to next() for middleware handling.
⦁ Example:
app.get('/async', async (req, res, next) => {
try {
const data = await getData(); // Assume this might fail
res.json(data);
} catch (err) {
next(err); // Passes to error middleware
}
});Pro tip: Use async-error wrappers like express-async-errors for cleaner code without manual next().
📍 5. Sending Proper Status Codes
⦁ 400 → Bad Request (invalid input)
⦁ 401 → Unauthorized (auth failed)
⦁ 403 → Forbidden (no access)
⦁ 404 → Not Found (resource missing)
⦁ 500 → Internal Server Error (server-side issue)
Always pair with descriptive messages, but keep sensitive details out.
📍 6. Error Logging
⦁ Use console.error() for quick logs or libraries like Winston/Morgan for structured logging (e.g., to files or services like Sentry).
⦁ Track errors with timestamps, user IDs, and request paths for easier debugging in production.
📍 7. Best Practices
⦁ Keep messages user-friendly (e.g., "Invalid email" vs. raw stack).
⦁ Never expose stack traces in prod—use env checks.
⦁ Centralize with global middleware; validate inputs early to avoid errors.
⦁ Test with tools like Postman to simulate failures.
💬 Tap ❤️ for more!