これは私のコードです。
_if !module.parent
try
hons_server.listen config.port
console.log 'Listening to port ' + config.port
catch err
console.error "Couldn't start server: #{String(err)}".red
_
_hons_server
_は express.jsサーバー です。 hons_server.listen()
の結果としてスローされたエラーがtry/catchによってキャッチされない理由を理解するのに苦労しています。サーバーを2回実行すると、次の出力が得られます。
[。 // process.nextTickエラー、または最初のティックでの「error」イベント ^ エラー:errnoException(net.js:632:11)[.____でEADDRINUSE をリッスンします。 ] at Array.0(net.js:733:26) at EventEmitter._tickCallback(node.js:192:40)
スローされたエラーがキャッチされない理由と、EADDRINUSEエラーをキャッチする方法/場所を知りたいのですが。
サーバーインスタンスでerror
イベントをリッスンします
hons_server.on 'error', (err) ->
console.log 'there was an error:', err.message
受け入れられたソリューションは、nodejs0.8.22およびexpress3.1.0では機能しませんでした。
これはトリックをしました:
process.on('uncaughtException', function(err) {
if(err.errno === 'EADDRINUSE')
console.log(...);
else
console.log(err);
process.exit(1);
});
Node.js Expressアプリが起動エラーを処理する も参照してください