2012-09-19 10 views
12

Jestem nowy w węźle node.js i próbuję eksperymentować z podstawowymi rzeczami.Node.js http.createServer jak uzyskać błąd

Moje kodu jest to

var http = require("http"); 
http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World"); 
    response.end(); 
}).listen(8888); 

Oto jest pytanie - jak widzę wyjątki wyrzucony (lub zdarzenia rzucony) podczas wywoływania createServer? Próbowałem try/catch, ale nie działa. W API modułu nie mogłem znaleźć żadnego odniesienia do niego. Pytam, ponieważ przypadkowo uruchomiłem serwer na podjętym porcie (8888), a błąd, który otrzymałem (w linii poleceń), był Błąd: EDDRINUSE, jest to przydatne, ale dobrze byłoby móc zrozumieć, w jaki sposób błędy są wychwytywane. w węźle.

Odpowiedz

1

Można użyć

process.on('uncaughtException', function(e){ 
    console.log(e); 
}); 

Aby obsłużyć niezłapane wyjątki. Każdy nieobsługiwany wyjątek z serwera WWW może zostać przechwycony w ten sposób.

4

Wydruku stosu nieprzechwyconych wyjątków za pomocą następującego kodu.

process.on('uncaughtException', function(err) { 
      console.error(err.stack); 
}); 
+0

jest to złe podejście, można wyciek zasobów jak szalony ([>> oficjalnym oświadczeniu] (https://nodejs.org/api /process.html#process_event_uncaughtexception)) –

19

Możesz to zrobić, korzystając ze zdarzenia błędu na serwerze, który tworzysz. Najpierw uzyskaj wynik .createServer().

var server = http.createServer(function(request, response) { 

Następnie można łatwo obsługiwać błędy:

server.on('error', function (e) { 
    // Handle your error here 
    console.log(e); 
}); 
+2

To najlepsze rozwiązanie, ponieważ nasłuchuje na właściwym "serwerze", a nie na całym procesie. –

+0

Znacznie lepsze rozwiązanie. –

Powiązane problemy