Versprechungen verwenden - Stack-Trace im Fail-Handler protokollieren

Ich bin ein Neuling bei NodeJS, deshalb werde ich etwas genauer erklären, was ich versuche zu tun.

Ich habe einen Webserver. Wenn eine Anfrage fehlschlägt, möchte ich den Stack-Trace dieser Ausnahme protokollieren, aber eine Fehlerseite übermitteln und den Server nicht zum Absturz bringen.

Als Beispiel die Funktion, die die Anfragen bearbeitet:

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();

Die Ausgabe der Konsole:

sending response …
oh no! an exception
sending error page
You had an error:  [Error: You did something wrong!]

Ich kann keinen Weg finden, um auf den Stack-Trace zuzugreifen. Wenn ich jedoch eine Ausnahme im .fail-Handler auslasse (oder einfach den vollständigen .fail-Handler weglasse), wird auf der Konsole ein Stack-Trace angezeigt (der Server muss jedoch neu gestartet werden).

Also denke ich meine Frage ist:

Wie greife ich in einem Promise Fail-Handler auf den Stack-Trace zu?

BEARBEITEN: Tipps zur Verbesserung der Erklärung sind natürlich willkommen. Wenn ich mich nicht klar ausgedrückt habe, lassen Sie es mich bitte wissen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage