El patrón que uso para manejar errores en todas mis APIs Node.js

por Sergio Diaz Delgado··95 votos

Despues de mucho prueba y error, mi patron de manejo de errores:

class AppError extends Error {
  constructor(message, statusCode = 500, code = 'INTERNAL_ERROR') {
    super(message)
    this.statusCode = statusCode
    this.code = code
  }
}

// Middleware global
app.use((err, req, res, next) => {
  const status = err.statusCode || 500
  const message = err.message || 'Internal Server Error'
  res.status(status).json({ success: false, error: message, code: err.code })
})

Todos los errores pasan por aqui. Sin try/catch duplicado. Sin inconsistencias en el formato de error.