2012-09-11 26 views
5

私はjavascriptとnodeが初めてで、node.jsとexpressを使ってアプリケーションを作成しようとしています。node.jsでの例外処理とエクスプレス

私はエラーのための適切なコールバックを入れているが、それらはどこにでも置かれていない、と時々サーバが理由だけで来て、いくつかの例外を停止するのNode.js。

を永遠に「「成り上がり」をお使いになることをお勧めされています'node.jsが常に実行されている状態を保ち、node.jsが停止してもそれを開始します。

急行がそれが今の私のために働いているリンクから、次のhttp://expressjs.com/guide.html#error-handling

app.use(function(err, req, res, next){ 
    console.error(err.stack); 
    res.send(500, 'Something broke!'); 
}); 

することにより、すべての例外のためにすべての漁獲量を提供しているようです。しかし、私はこのようなエラーをキャッチすることは副作用があり、変数を矛盾した状態にすることができるので、良い考えではないということをどこかで読んでいますか? また、このような例外をすべてキャッチすることはできませんし、サーバーが何らかの例外のために停止してしまう場合もあります。本当ですか?

私の質問はおそらくこれです。

1)上記のような例外処理によって、一部の変数が不整合な状態になることはありますか? 2)サーバーを停止するいくつかの例外がありますか?この例外処理方法がinconsistant状態でいくつかの変数を残すことができるかどうか

おかげ&よろしく

Tuco

+0

参照:http://machadogj.com/2013/4/error-handling-in-nodejs.html – vsync

答えて

3

1)実装に依存します。

すべての変数を特定の要求と機能に絞り込み、グローバルアプリケーションオブジェクトのようなグローバル変数以上の変数にアクセスしないと、問題ありません。未使用メモリは、ガベージコレクタによって例外の直後にクリーンアップされます。

2)はい、一部の例外でサーバーを停止する可能性があります。したがって、このようなプロセスに対してグローバル例外処理ハンドラを設定する必要があります:http://nodejs.org/api/process.html#process_event_uncaughtexception