Expressjs - Manipulando erros com o Middleware

Estou criando uma API (usando o Expressjs v4) e normalmente lidei com erros dentro da rota, em vez de usar o middleware. Por exemplo:

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

Agora percebo que o middleware é o "caminho a percorrer". Eu vi a documentação bastante limitada no site Expressjs aqui:http://expressjs.com/guide/error-handling.html mas ainda não tenho certeza de algumas coisas.

Eu adicionei noserver.js:

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

}

mas como devo lidar com os diferentes tipos de erros (400.404.500 etc.)?

Estou escrevendo 3 linhas de código cada vez que ocorre um erro:

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

e eu posso acessar o status usando:

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

Certamente há uma maneira mais fácil do que isso? Estou esquecendo de algo?

questionAnswers(2)

yourAnswerToTheQuestion