Usando promessas - Rastreamento de pilha de log no manipulador de falha
Eu sou bastante novo no nodejs, então vou explicar um pouco mais detalhadamente o que estou tentando fazer.
Eu tenho um servidor web. Se uma solicitação falhar, desejo registrar o rastreamento de pilha dessa exceção, mas entregar uma página de erro e não travar o servidor.
Por exemplo, a função que manipula as solicitações:
var Q = require('q');
var requestHandler = function () {
// Here I get the data etc. that was requested. As this is not important, just a dummy here
Q.resolve()
// Now I answer the request
.then(function (data) {
// Dummy Code representing the sending of a response
console.log('sending response …');
console.log('oh no! an exception');
// Now an Exception occurs
throw new Error('You did something wrong!');
})
// If there was any error, show the error page instead
.fail(function (err) {
// Dummy Code representing the sending of the error page
console.log('sending error page');
// Additionally I want to write the error into a log file
console.error('You had an error: ', err);
})
// If there was an error in the .fail-handler, I deserve the server to crash
.done();
};
// A request comes in, I want to call my handler
requestHandler();
A saída do console:
sending response …
oh no! an exception
sending error page
You had an error: [Error: You did something wrong!]
Não consigo ver uma maneira de acessar o rastreamento de pilha. Mas quando eu jogo uma exceção no .fail-handler (ou apenas omito o completo .fail-handler), recebo um rastreamento de pilha no console (mas eu teria que reiniciar o servidor).
Então eu acho que minha pergunta é:
Como faço para acessar o rastreamento de pilha em um manipulador de falha de promessa?
EDITAR: Algumas dicas sobre como melhorar a explicação são bem-vindas, é claro. Se eu não me fiz claro, por favor me avise.