2013-04-28 10 views
14

私は流星で捕らえられていない例外を捕まえて、優雅なやり方でそれらを扱いたいと思っています。ノードのprocess.on('uncaughtException', function(err) {})にアナログがありますか?Meteorでグローバルなキャッチされない例外ハンドラを設定することはできますか?

私はクライアントとサーバーの両方のソリューションに興味があります。

+2

これはクライアント側で 'window.onerror = function(message、url、linenumber){...};'を使用していればいいですよね。 –

+0

私はこれを理解しようとしていますサーバー用のものもあります。しかし、Meteorが少なくともサーバメソッドから例外をキャッチし、それ自体を報告しているかのようです:( – aknuds1

答えて

1

私はサーバー側のキャッチされていない例外処理のためのこのアイデアをテストしています。

Fiber = Npm.require('fibers'); 
process.on('uncaughtException', function(err){ 
    console.log(err.message); 
    console.log(err.stack); 
    Fiber(function(){ 
     Logs.insert({ ... }) // Logs is a collection 
    }).run(); 
    process.exit(1) 
}; 
+1

これは動作しますか? 'uncaughtException'ハンドラをインストールしようとしましたが、起動しません。Meteorがこれをオーバーライドしているかのようですどういうわけか。 – aknuds1

0

私はスタックトレースせずに生きることができるよう、さまざまなコンソールメソッドをオーバーライドすることになっただけでなくこれに苦労。コンソールウィンドウにエラーが表示されるので、これは私のためのトリックです。 process.on( 'uncaughtException'、...)はMeteorでは動作しませんが、いくつかの奇妙な理由のために素晴らしい代替手段はありません。

This little library私は大いに役立ちました、それを使用したり、ソースコードを見てみてください。

関連する問題