Princípios de tratamento de erros para aplicativos Node.js + Express.js?

Parece que o relatório / tratamento de erros é feito de maneira diferente no Node.js + Express.js aplicativos em comparação com outras estruturas. Estou correto ao entender que funciona da seguinte maneira?

UMA Detectar erros, recebendo-os como parâmetros para suas funções de retorno de chamada. Por exemplo

doSomethingAndRunCallback(function(err) { 
    if(err) { … }
});

B) Relatóri erros no MIDDLEWARE chamando next (err). Exemplo

handleRequest(req, res, next) {
    // An error occurs…
    next(err);
}

C) Relatóri erros em ROUTES, lançando o erro. Exemplo

app.get('/home', function(req, res) {
    // An error occurs
    throw err;
});

D) Lidar co erros configurando seu próprio manipulador de erros via app.error () ou use o manipulador de erros genérico do Connect. Exemplo

app.error(function(err, req, res, next) {
    console.error(err);
    res.send('Fail Whale, yo.');
});

sses quatro princípios são a base de todo tratamento / relatório de erros nos aplicativos Node.js + Express.j

questionAnswers(3)

yourAnswerToTheQuestion