Expressjs - Manejo de errores con middleware

Estoy creando una API (usando Expressjs v4) y típicamente he tratado con errores dentro de la ruta en lugar de usar middleware. Por ejemplo:

router.use('/', function(req, res, next) {
  ...
  if (err)
    return res.status(500).send({type: "serverError", message: "Something has gone wrong on our end."});
}

Ahora me doy cuenta de que el middleware es el "camino a seguir". He visto la documentación bastante limitada en el sitio Expressjs aquí:http://expressjs.com/guide/error-handling.html pero aún no estoy seguro de algunas cosas.

He añadido en elserver.js:

function errorHandler(err, req, res, next) {

}

pero, ¿cómo se supone que debo manejar los diferentes tipos de errores (400,404,500, etc.)?

Me encuentro escribiendo 3 líneas de código cada vez que ocurre un error:

//A route
var err = new Error();
err.status = 404;
return next(err);

y puedo acceder al estado usando:

function errorHandler(err, req, res, next) {
  console.log(err.status);
  if(err.status == "400")
    //do something
  else
    //etc etc
}

¿Seguramente hay una manera más fácil que esto? ¿Me estoy perdiendo de algo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta