Node.js Error Handling Best Practices
2026-02-20·7 min read·Backend
Error Types
- Operational Errors: Expected failures (network timeout, file not found)
- Programming Errors: Bugs (null pointer, type errors)
- User Input Errors: Validation failures
Error Handling Patterns
async function handle(req, res) {
try {
const data = await fetchData()
res.json(data)
} catch (error) {
console.error(error)
res.status(500).json({ error: 'Server error' })
}
}
process.on('uncaughtException', (error) => {
console.error(error)
process.exit(1)
})
Custom Error Classes
class AppError extends Error {
constructor(message, statusCode, code) {
super(message)
this.statusCode = statusCode
this.code = code
this.isOperational = true
}
}