2016-06-25 2 views
0

자바에서 ES6 generators을 사용하고 있으며 사용하고있는 라이브러리에서 발생하는 오류를 처리하는 방법을 고민하고 있습니다.Javascript generator catch error

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으로 파이프하십시오.

완벽한 솔루션은 아니지만. 그러나 다음을 사용하여 응용 프로그램 전체의 오류를 한 곳에서 잡을 수 있습니다.

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

잘못된 요청 매개 변수로 인해 오류가 발생하면 앱에서 아무런 응답도 보내지 않습니다. –