2012-09-19 22 views
12

node.js uygulamasında yeniyim ve temel şeyleri denemeye çalışıyorum.Node.js http.createServer hatayı nasıl alır

Kodum İşte bu

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

olan soru - nasıl createServer çağrılırken istisnalar atılmış (veya olaylar atılmış) görebilirsiniz? Try/catch deneyin ama işe yaramıyor. Modülün API'sinde herhangi bir referans bulamadım. Ben yanlışlıkla bir port (8888) bir sunucu başlattı ve ben (komut satırında) aldım hata Hata: EDDRINUSE, bu yeterince yararlı olduğunu ama hataları nasıl yakalandığını anlayabilmek güzel olurdu çünkü soruyorum düğümde

cevap

1

Sen

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

yakalanmamış istisnalar işlemek için kullanabilirsiniz. Web sunucusundan işlenmeyen bir istisna bunun gibi yakalanabilir.

4

Aşağıdaki kodu kullanarak yakalanmamış istisnaların stacktraceini yazdırın.

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

Bu kötü bir yaklaşım, deli ([>> resmi açıklamada] gibi kaynaklara sızıntı olabilir edilir:

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

Sonra, kolayca hataları işleyebilir /process.html#process_event_uncaughtexception)) –

19

Bunu, oluşturduğunuz sunucudaki hata olayını ele alarak yapabilirsiniz. İlk olarak, .createServer() sonucunu alın. https://nodejs.org/api (

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

Bu, tüm süreç değil, doğru 'sunucu' kapsamını dinleyen en iyi çözümdür. –

+0

Çok daha iyi bir çözüm. –