【问题标题】:Javascript generator catch errorJavascript 生成器捕获错误
【发布时间】:2016-10-27 18:42:34
【问题描述】:

我在 Javascript 中使用 ES6 generators 并试图围绕如何处理我正在使用的库引发的错误。以下是代码 sn -p :

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

使用的库是 co-feedparser,它是 feedparser 库的共同包装器。当传递的 url 具有有效的 rss 提要时,该库运行良好。但是,每当传递了无效的 rss url 提要时,应用程序不会捕获异常,而是崩溃并转储

/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` 

我认为这是 feedparser 库中的一个例外。如何确保捕获这些异常而不是使整个应用程序崩溃?

【问题讨论】:

    标签: javascript error-handling ecmascript-6 koa


    【解决方案1】:

    这似乎是来自co-feedparser 的问题,因为没有进行正确的错误处理。特别是在从给定的 url 创建一个新的请求流并将该流通过管道传输到Feedparser 时。

    虽然它不是一个完美的解决方案。但是您可以使用以下方法在一个地方捕获应用程序范围的错误。

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

    【讨论】:

    • 这种方法的唯一问题是,如果由于错误的请求参数而引发错误,应用程序不会发送任何响应
    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2016-04-29
    相关资源
    最近更新 更多