Catch Express BodyParser error

Quiero detectar el error del middleware bodyParser () cuando envío un objeto json y no es válido porque deseo enviar una respuesta personalizada en lugar de un error genérico 400.

Esto es lo que tengo y funciona:

app.use (express.bodyParser ());
app.use (function (error, req, res, next){
    //Catch bodyParser error
    if (error.message === "invalid json"){
        sendError (res, myCustomErrorMessage);
    }else{
        next ();
    }
});

Pero esto me parece un enfoque muy feo porque estoy comparando el mensaje de error que podría cambiar en futuras versiones expresas. ¿Hay alguna otra manera de atrapar errores bodyParser ()?

EDITAR:

Este es el error cuando el cuerpo de la solicitud tiene un json no válido:

{
  stack: 'Error: invalid json\n    at Object.exports.error (<path>/node_modules/express/node_modules/connect/lib/utils.js:55:13)\n    at IncomingMessage.<anonymous> (<path>/node_modules/express/node_modules/connect/lib/middleware/json.js:74:71)\n    at IncomingMessage.EventEmitter.emit (events.js:92:17)\n    at _stream_readable.js:872:14\n    at process._tickDomainCallback (node.js:459:13)',
  arguments: undefined,
  type: undefined,
  message: 'invalid json',
  status: 400
}

Bonita pila impresa:

Error: invalid json
    at Object.exports.error (<path>/node_modules/express/node_modules/connect/lib/utils.js:55:13)
    at IncomingMessage.<anonymous> (<path>/node_modules/express/node_modules/connect/lib/middleware/json.js:74:71)
    at IncomingMessage.EventEmitter.emit (events.js:92:17)
    at _stream_readable.js:872:14
    at process._tickDomainCallback (node.js:459:13)

Respuestas a la pregunta(5)

Su respuesta a la pregunta