Как обрабатывать исключения кода в node.js?

Я просмотрел документацию Express, и часть, описывающая обработку ошибок , для меня совершенно непрозрачна.

Я понял, что appони ссылаются на экземпляр createServer(), верно? Но я понятия не имею, как остановить node.js от взрыва процесса приложения, когда во время обработки запроса возникает исключение.

На самом деле мне не нужно ничего особенного; Я просто хочу вернуть статус 500 плюс пустой ответ, когда есть исключение. Процесс узла не должен завершаться только потому, что где-то возникло неперехваченное исключение.

Есть ли простой пример того, как этого добиться?


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

аварийно завершает работу всего приложения, вызывая трассировку

mypath/tst.js:16
           chunk.call(); // no such method; throws here
                 ^ TypeError: Object... has no method 'call'
    at IncomingMessage. (/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)

25
задан Hongarc 27 October 2018 в 13:04
поделиться