0

私のアプリケーションでは、uncaughtException を使用してアプリケーション エラーをキャプチャする独自のモジュールを作成したいと考えています。同じモジュールで uncaughtException を作成すると、エラーがキャプチャされることを意味しますが、その uncaughtException を別のモジュールで作成すると、そのモジュールを呼び出すと、エラーがキャプチャされないことを意味します。この問題を解決するのを手伝ってください。

module1.js

   var errorModule=require('./module2');
   var err = new Error('Something went terribly wrong');
   errorModule.captureError(err);

module2.js

  module.exports.captureError=function(err){

     process.on('uncaughtException', function(err) {

       console.log(err);

   });



 }
4

1 に答える 1

0

これを試して:

// module1.js
var errorModule=require('./module2');
errorModule.captureErrors();    
throw Error('Something went terribly wrong');

// module2.js
module.exports.captureErrors = function() {
  process.on('uncaughtException', function(err) {
    console.log('an error occurred', err);
  });
};

注意すべき点がいくつかあります。

  • process.on('uncaughtException', ...)キャッチされていない例外をキャッチするイベント ハンドラーをインストールします。あなたのコードはそれにエラーを渡そうとしますが、それはあなたが書いているものを無効にしているようです ( 「uncaughtException を使用してアプリケーション エラーをキャプチャするため」 );
  • キャッチされない例外は、スローされるエラーです( throw Error(...))。

のコードを機能させ たい場合は、次のようmodule1module2する必要があります。

module.exports.captureError = function(err) {
  console.log(err);
};

しかし、それは とは何の関係もありませんuncaughtException

于 2013-03-29T06:20:34.040 に答える