Knoten -, Express -, Domänen, nicht abgefangene Ausnahmen - immer noch verloren

Habe ich gelesen, für Stunden auf die Ausnahmebehandlung in Knoten. Ich verstehe die Nachteile der Verwendung von uncaughtException ich verstehen, dass die Stilllegung der Prozess ist gut für die Verhinderung einer "unbekannten Zustand", wo "alles kann passieren". Ich verstehe, dass die Verwendung domains ist der Weg zu gehen, und ich verstehe, wie Sie richtig zu implementieren, domains, speziell Explizite Bindung...

...aber ich bin immer noch nicht bekommen keine Ergebnisse für nur grundlegende Fehlerbehandlung.

Ich würde gerne in der Lage, nur fangen keine nicht abgefangene Ausnahmen für die Zwecke der Protokollierung. Ich bin nicht dagegen, die Tötung der Prozess oder irgendetwas anderes als "unerwünscht". Ich will einfach nur ein log.

Ich fühle mich nicht wie ich haben sollte, wickeln Sie alles in einen try/catch-oder einige-Bibliothek zu emit Fehler... bitte korrigiert mich wenn ich falsch bin, und ich werde ändern Sie meine Wege.

Ich bin mit Node und Express und ich habe folgenden einfachen code:

var express = require('express');
var domain = require('domain');

var serverDomain = domain.create();
serverDomain.on('error', function(err) {
    console.log("SERVER DOMAIN ERROR: " + err.message);
});

serverDomain.run(function() {
    var app = express();
    app.get('/testing', function() {
        app.nonExistent.call(); //this throws an error
    });

    var server = app.listen(8000, function() {
        console.log('Listening on port %d', server.address().port);
    });
});

Den Fehler in der Konsole, sondern die Konsole erhält nie den "SERVER-DOMAIN ERROR..." angezeigt. Ich habe auch versucht, das einwickeln der Anfrage - /Antwort-in Ihrer eigenen Domäne als auch, ohne Erfolg. Umso enttäuschender ist die Tatsache, dass die Verwendung des folgenden nicht funktionieren:

process.on('uncaughtException', function(err) {
    console.log('uncaughtException caught the error');
});

Mache ich etwas falsch? Wo gehe ich von hier? Wie kann ich fangen die oben genannten Fehler?

InformationsquelleAutor Ryan Wheale | 2014-05-27
Schreibe einen Kommentar