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

8

Ich habe stundenlang über die Ausnahmebehandlung in Node gelesen. Ich verstehe die Nachteile der Verwendung von uncaughtException , ich verstehe, dass das Herunterfahren des Prozesses gut ist, um jeden "unbekannten Zustand" zu verhindern, in dem "irgendetwas passieren kann". Ich verstehe, dass die Verwendung von Domains der richtige Weg ist, und ich verstehe, wie Domains richtig implementiert werden, insbesondere Explicit Binding ...

... aber ich bekomme immer noch keine Ergebnisse für die einfache Fehlerbehandlung.

Ich möchte in der Lage sein, nur irgendwelche nicht abgefangenen Ausnahmen zum Zwecke der Protokollierung einzufangen. Es macht mir nichts aus, den Prozess oder etwas anderes, das als "unerwünscht" gilt, zu töten. Ich möchte nur ein Protokoll.

Ich habe nicht das Gefühl, dass ich alles in einen try / catch wickeln oder eine Bibliothek für emit errors verwenden soll ... bitte korrigiert mich, wenn ich falsch liege und ich meine Wege ändern werde.

>

Ich verwende Node und Express und ich habe den folgenden einfachen Code:

%Vor%

Der Fehler wird in der Konsole angezeigt, aber die Konsole erhält niemals die Meldung "SERVER DOMAIN ERROR ...". Ich habe auch versucht, die Anfrage / Antwort in ihrer eigenen Domäne zu verpacken, ohne Erfolg. Noch enttäuschender ist die Tatsache, dass auch Folgendes nicht funktioniert:

%Vor%

Mache ich etwas falsch? Wohin gehe ich von hier? Wie kann ich den obigen Fehler finden?

    
Ryan Wheale 27.05.2014, 06:52
quelle

2 Antworten

5

Sie können connect-domain verwenden.

Das Problem liegt darin, dass die Ausnahme während des Connect-Routings auftritt, das sowohl einen try / catch-Block um seine Ausführung als auch einen standardmäßigen Fehlerhandler aufweist, der Stack-Trace-Details ausgibt, wenn er in einem Nicht-Produktionsmodus ausgeführt wird. Da die Ausnahme in Express behandelt wird, erreicht sie niemals Ihre äußere Ebene für die Domänen.

Hier ist ein Beispiel, warum man das connect-domain-Paket anstelle der Domäne verwenden sollte.

Ссылка

%Vor%     
Waqas Ahmed 27.05.2014, 10:23
quelle
5

Dies geschieht, weil Express die auftretenden Fehler selbst behandelt und auf diese Weise Ihre Arbeit vereinfacht. Siehe Express Guide zur Fehlerbehandlung . Sie sollten die folgende Struktur verwenden, um die möglicherweise auftretenden Fehler zu behandeln:

%Vor%     
micnic 27.05.2014 07:43
quelle