2012-09-19 14 views
12

私はnode.jsを初めて使用しており、基本的なものを試してみようとしています。Node.js http.createServerエラーの取得方法

私のコードはここに、この

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

ある質問です - どのように私はcreateServerを呼び出すときに例外がスローされる(またはイベントがスロー)を見ることができますか?私はtry/catchを試みましたが、うまくいかないようです。モジュールのAPIで私はそれへの参照を見つけることができませんでした。私は偶然、撮影されたポート(8888)でサーバを起動し、(コマンドラインで)エラーが発生したために尋ねています:EDDRINUSE、これは十分に役立ちますが、エラーがどのように捕捉されたかを理解できるノード内。

答えて

1

あなたは

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

がキャッチされない例外を処理するために使用することができます。 Webサーバーからの未処理の例外がこのようにキャッチされる可能性があります。

4

エラーは、listen()メソッドで発生します。 API documentationには、あなたのシチュエーションのためにexampleが含まれています。

4

以下のコードを使用して、キャッチされていない例外のスタックトレースを表示します。

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

これは悪いアプローチである、あなたは狂った([>>公式声明](https://nodejs.org/apiなどのリソースをリークすることができ/process.html#process_event_uncaughtexception)) –

19

作成しているサーバーでエラーイベントを処理することでこれを行うことができます。まず、.createServer()の結果を取得します。

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

その後、あなたは簡単にエラーを処理することができます

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

これは、プロセス全体ではなく、正しい「サーバー」スコープでリッスンするための最良のソリューションです。 –

+0

もっと良い解決策。 –

関連する問題