2016-06-25 4 views
0

私はES6 generatorsをJavascriptで使用しています。使用しているライブラリでスローされたエラーを処理する方法については、次のコードスニペットです:Javascriptジェネレータのキャッチエラー

const feedParser = require('co-feedparser'); 
try { 
    const meta = yield feedParser(url); 
    return meta.articles; 
} catch(e) { 
    logger.error(e); 
} 

使用されているライブラリがfeedparserライブラリ周りの共同ラッパーであるco-feedparserです。 URLが渡されたときにライブラリがうまく動作し、有効なRSSフィードが得られます。しかし、いつでも無効RSSのURLのフィードは、渡された代わりに、例外をキャッチする、アプリがクラッシュし、私はfeedparserライブラリ内の例外であると考えてい

/node_modules/co-feedparser/node_modules/feedparser/main.js:332 
     this.stack[0][stdEl] = n; 
         ^

TypeError: Cannot assign to read only property 'feed' of false` 

をダンプします。アプリ全体をクラッシュさせる代わりに、これらの例外がキャッチされるようにするにはどうすればよいですか?

答えて

0

正しいエラー処理を行わないと、co-feedparserから問題が発生しているようです。特に、指定されたURLから新しいリクエストストリームを作成し、そのストリームをFeedparserにパイプします。

これは完璧な解決策ではありませんが、しかし、次のようにして、アプリケーション全体のエラーを1か所でキャッチできます。

process.on('uncaughtException', function(err){ 
    console.error('uncaughtException: ' + err.message); 
    console.error(err.stack); 
    process.exit(1);    // exit with error 
}); 
+0

この方法で問題が発生するのは、不正なリクエストパラメータが原因でエラーがスローされた場合、アプリは応答を送信しないことです –

関連する問題