5

私はjavascriptとノードが初めてで、node.jsとexpressを使用してアプリケーションを作成しようとしています。

エラーに対して適切なコールバックを配置しましたが、それらはどこにも配置されておらず、例外が発生したために node.js サーバーが停止することがあります。

「upstart」または「forever」を使用して node.js を常に実行し続け、node.js が停止しても開始することをお勧めします。

リンクhttp://expressjs.com/guide.html#error-handlingから次のように、express がすべての例外に対してすべてのキャッチを提供しているようです。

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

それは今私のために働いています。ただし、このようなエラーをキャッチすることは、副作用があり、変数が一貫性のない状態のままになる可能性があるため、良い考えではないことをどこかで読みましたか? また、このような例外のキャッチはすべてのケースで機能するわけではなく、サーバーが何らかの例外で停止する場合もあります。本当ですか?

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

1) 上記のような例外処理によって、一部の変数が一貫性のない状態のままになる可能性はありますか? 2) それでもサーバーを停止させるいくつかの例外はありますか?

ありがとうございます。それでは、お元気で

トゥコ

4

1 に答える 1

3

1) この例外処理メソッドが一部の変数を矛盾した状態のままにすることができるかどうかは、実装によって異なります。

すべての変数を特定のリクエストと関数にスコープし、グローバル アプリ オブジェクトのようなグローバル変数またはそれ以上の変数にアクセスしない場合は、問題ありません。未使用のメモリは、ガベージ コレクターによって例外の直後にクリーンアップされます。

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

于 2013-01-11T11:54:42.277 に答える