9

promise で特定のエラーを処理する方法は知っていますが、次のようなコードが時々あります。

somePromise.then(function(response){
    otherAPI(JSON.parse(response));
});

ときどき、ここでJSON.parse throws. .catch一般に、コード内のすべてのプロミスにハンドラーを追加することを忘れないでください。そうしないと、忘れた場所を見つける方法がありません。

コード内でこれらの抑制されたエラーを見つけるにはどうすればよいですか?

4

1 に答える 1

18

編集

これは Node.js 15 で最終的に修正されました。5 年かかりましたが、ネイティブの promise の拒否は、キャッチされていない例外のように動作するようになりました。そのため、process.on('uncaughtException'ハンドラーを追加するだけで問題ありません。

最新の Node.js では

io.js 1.4 および Node 4.0.0 以降では、次のprocess "unhandledRejection"イベントを使用できます。

process.on("unhandledRejection", function(reason, p){
    console.log("Unhandled", reason, p); // log all your errors, "unsuppressing" them.
    throw reason; // optional, in case you want to treat these as errors
}); 

これにより、未処理の拒否の問題と、コード内でそれらを追跡することの難しさに終止符が打たれます。

古いNodeJSで

これらのイベントは、古いバージョンの NodeJS にまだ移植されておらず、そうなる可能性は低いです。最新バージョンと同じイベントを発生させるbluebirdなどのネイティブ promise API を拡張する promise ライブラリを使用できます。


また、未処理の拒否検出機能を提供するいくつかのユーザーランド promise ライブラリがあることにも言及する価値ます。

于 2015-02-25T01:38:11.390 に答える