Ich ging durch die Dokumentation von Express, und the part describing error handling ist völlig undurchsichtig für mich.Wie behandelt man Code-Ausnahmen in node.js?
Ich dachte, die app
sie beziehen sich auf eine Instanz ist createServer()
, richtig? Aber ich habe keine Ahnung, wie Sie verhindern können, dass node.js den Anwendungsprozess sprengt, wenn während der Bearbeitung einer Anfrage eine Ausnahme auftritt.
Ich brauche wirklich nichts Besonderes; Ich möchte nur einen Status von 500 und eine ansonsten leere Antwort zurückgeben, wenn es eine Ausnahme gibt. Der Knotenprozess darf nicht beenden, nur weil irgendwo eine nicht abgefangene Ausnahme aufgetreten ist.
Gibt es ein einfaches Beispiel, wie dies zu erreichen ist?
var express = require('express');
var http = require('http');
var app = express.createServer();
app.get('/', function(req, res){
console.log("debug", "calling")
var options = {
host: 'www.google.com',
port: 80,
path: "/"
};
http.get(options, function(response) {
response.on("data", function(chunk) {
console.log("data: " + chunk);
chunk.call(); // no such method; throws here
});
}).on('error', function(e) {
console.log("error connecting" + e.message);
});
});
app.configure(function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.listen(3000);
stürzt die gesamte App, Zurückverfolgungs
mypath/tst.js:16
chunk.call(); // no such method; throws here
^TypeError: Object ... has no method 'call'
at IncomingMessage.<anonymous> (/Library/WebServer/Documents/discovery/tst.js:16:18)
at IncomingMessage.emit (events.js:67:17)
at HTTPParser.onBody (http.js:115:23)
at Socket.ondata (http.js:1150:24)
at TCP.onread (net.js:374:27)
', nur weil es eine abgefangene Ausnahme somewhere.' Der Prozess war *** wird *** sterben, wenn es eine * abgefangene * Ausnahme. Wenn Sie nicht möchten, dass es beim Auftreten einer Ausnahme beendet wird, fangen Sie die Ausnahme ab und geben 500 Fehler zurück. – Chad
Sie könnten sich für die nicht-Express-Art interessieren: http://StackOverflow.com/Questions/4213351/Make-Node-JS-Not-Exit-On-Fehler – Matt
Ausgezeichnet, vielen Dank @Matt! – user124114