Comment gérer les exceptions de code dans node.js?

Je suis allé à travers la documentation de l'Express, et la partie décrivant la gestion d'erreur est complètement opaque pour moi.

J'ai pensé que la app ils font référence à une instance createServer(), droit? Mais je n'ai aucune idée de comment l'arrêter node.js de souffler dans le processus lorsqu'une exception se produit lors du traitement de la demande.

Je n'ai pas besoin de quelque chose de compliqué, vraiment, je veux juste de retour d'un statut de 500, en plus d'une réponse vide, chaque fois qu'il y a une exception. Le nœud de processus ne doit pas mettre fin juste parce qu'il y a une exception non interceptée quelque part.

Est-il un exemple simple de comment faire?


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

accidents de la totalité de l'app, la production de sperme

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)
  • just because there was an uncaught exception somewhere. Le processus de va mourir si il y a une exception non interceptée. Si vous ne voulez pas à s'arrêter lorsqu'une exception se produit, d'intercepter l'exception et de retour d'erreur 500.
  • Vous pourriez être intéressé par la non-voie express: stackoverflow.com/questions/4213351/...
  • Excellent, merci beaucoup @Matt !
InformationsquelleAutor user124114 | 2012-04-30