0

node.js (v0.8.15、最新の安定版) プログラムがクラッシュし、次の出力のみが表示されました。

timers.js:103
        if (!process.listeners('uncaughtException').length) throw e;
                                                                  ^
undefined

uncaughtExceptionリスナーを使用してさらに深く掘り下げることを考えて、簡単なコールバックを登録しました。

process.on('uncaughtException', function() {
  console.log(arguments)
})

ただし、プロセスがクラッシュしたときに得られる唯一の出力は次のとおりです。

{ '0': undefined }

Exception オブジェクトも、スタック トレースも、メッセージもありませんundefined

  • なぜこれが起こるのでしょうか?undefinedこの文脈ではどういう意味ですか?
  • これをより適切にデバッグする方法について何か提案はありますか? もちろん、ランダムなデバッグ ステートメントでコードを散らかし始めることもできますが、エラーの発生源についての手がかりが 1 つもないので、それは野生のガチョウ追跡を求めているように思えます。
4

1 に答える 1

0

私はそれを理解しました:私のコードの一部は、throw eそれが定義されていない可能性のあるコンテキストで呼び出していました。未定義をスローすると、スタック情報などを添付することはできません。

他の誰かがこれ (または同様のもの) に遭遇した場合は、コードをチェックして、例外ではない何かをスローしていないかどうかを確認してください。(どのようにスローすべきかについては、StackOverflow の他の場所にある JavaScriptの優れたカスタム例外の質問を参照してください。)

于 2012-12-06T09:54:12.810 に答える