Использование обещаний - отслеживание трассировки стека в обработчике сбоя
Я довольно новичок в nodejs, поэтому я объясню немного подробнее, что я пытаюсь сделать.
У меня есть веб-сервер. Если запрос не удается, я хочу записать трассировку стека этого исключения, но доставить страницу с ошибкой, а не сбой сервера.
В качестве примера, функция, обрабатывающая запросы:
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();
Вывод консоли:
sending response …
oh no! an exception
sending error page
You had an error: [Error: You did something wrong!]
Я не вижу способа получить доступ к трассировке стека. Но когда я выкидываю исключение в обработчик .fail (или просто опускаю полный обработчик .fail), я получаю трассировку стека на консоли (но мне придется перезапустить сервер).
Итак, я думаю, мой вопрос:
Как получить доступ к трассировке стека в обработчике сбоя обещания?
РЕДАКТИРОВАТЬКонечно, приветствуются любые советы по улучшению объяснения. Если я не прояснил себя, пожалуйста, дайте мне знать.