2012-09-19 13 views
12

Sono nuovo su node.js e sto provando a sperimentare cose di base.Node.js http.createServer come ottenere l'errore

mio codice è questo

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

Ecco la domanda - come posso vedere le eccezioni generate (o eventi gettati) quando si chiama createServer? Ho provato try/catch ma non sembra funzionare. Nell'API del modulo non ho trovato alcun riferimento ad esso. Sto chiedendo perché ho accidentalmente avviato un server su una porta presa (8888) e l'errore che ho ricevuto (in linea di comando) era Errore: EDDRINUSE, questo è abbastanza utile ma sarebbe bello essere in grado di capire come vengono catturati gli errori nel nodo.

risposta

1

È possibile utilizzare

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

per gestire le eccezioni non gestite fanno. Qualsiasi eccezione non gestita dal server Web potrebbe essere catturata in questo modo.

4

Stampa stacktrace delle eccezioni non rilevate utilizzando il seguente codice.

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

questo è un cattivo approccio, si potrebbe perdere le risorse come un matto ([>> comunicato ufficiale] (https://nodejs.org/api /process.html#process_event_uncaughtexception)) –

19

È possibile eseguire questa operazione gestendo l'evento di errore sul server che si sta creando. Innanzitutto, ottieni il risultato di .createServer().

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

Quindi, si può facilmente gestire gli errori:

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

Questa è la soluzione migliore in quanto ascolta il giusto ambito "server" e non l'intero processo. –

+0

Soluzione molto migliore. –

Problemi correlati