Node.js での例外処理について何時間も読んできました。を使用することの短所をuncaughtException
理解しています。プロセスをシャットダウンすることは、「何かが起こる可能性がある」「不明な状態」を防ぐのに適していることを理解しています。ドメインを使用することが道であることを理解しており、ドメイン、特に明示的バインディングを適切に実装する方法を理解しています...
...しかし、基本的なエラー処理だけではまだ結果が得られません。
ロギングの目的で、キャッチされていない例外をキャッチできるようにしたいと考えています。プロセスやその他の「望ましくない」と見なされるものを強制終了してもかまいません。ログが欲しいだけです。
すべてを try/catch でラップしたり、ライブラリを使用してemit
エラーを発生させたりする必要があるとは思いません...間違っている場合は修正してください。方法を変更します。
Node と Express を使用しており、次の簡単なコードがあります。
var express = require('express');
var domain = require('domain');
var serverDomain = domain.create();
serverDomain.on('error', function(err) {
console.log("SERVER DOMAIN ERROR: " + err.message);
});
serverDomain.run(function() {
var app = express();
app.get('/testing', function() {
app.nonExistent.call(); // this throws an error
});
var server = app.listen(8000, function() {
console.log('Listening on port %d', server.address().port);
});
});
エラーはコンソールに表示されますが、コンソールは「SERVER DOMAIN ERROR...」メッセージを受け取りません。また、リクエスト/レスポンスを独自のドメインにラップしようとしましたが、役に立ちませんでした。さらにがっかりするのは、以下を使用しても機能しないという事実です。
process.on('uncaughtException', function(err) {
console.log('uncaughtException caught the error');
});
私は何か間違ったことをしていますか?ここからどこへ行けばいいですか?上記のエラーをキャッチするにはどうすればよいですか?