首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在获取异步函数中的数据时无法捕获错误

在获取异步函数中的数据时无法捕获错误
EN

Stack Overflow用户
提问于 2022-08-27 13:08:48
回答 1查看 47关注 0票数 0

我使用npm finance来获取股票数据。当我输入一个不存在的股票符号时,我想捕捉错误。

代码语言:javascript
复制
const yahooFinance = require('yahoo-finance');

async function stockData() {

try {
        let data = await yahooFinance.historical({symbol: "SIJGAOWSFA", from: 2020-08-23, to: 2021-08-23});
    } catch (error) {
        console.error(error)
    }
}

stockData();

但是,它似乎不是一个典型的获取错误。根本没被抓到。我的意思是,下面看到的错误没有通过console.error(error)登录到控制台。更确切地说,这个文件范围之外的内容是记录错误。当发生错误时,不会执行catch中的任何操作。

我计划在for循环中使用它,因此希望捕获错误,这样就可以避免执行以下任何函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-27 13:30:06

一位合作者说表示:

这是来自一个已经开始工作并停止工作的现有项目,还是一个新的项目? 如果前者-一切都还好的话。(非常)雅虎偶尔会有一些问题被困在自己的缓存中,可能也与DNS有关。我建议清除您的DNS缓存,并尝试查询不同的数据,以确定这是否有效。 如果是后者(新项目),则可能是您正在查询的数据。尝试查询不同的数据,看看它是否有效。通常,如果有什么问题,雅虎会抛出一个特定的错误,但可能是这样。

如果这两种方法都不起作用,但您仍然需要捕获这类错误,给出了源代码,它所做的是:

代码语言:javascript
复制
if (!crumb) {
  console.warn('root.Api.main context.dispatcher.stores.CrumbStore.crumb ' +
    'structure no longer exists, please open an issue.');

然后继续正常运行(不抛出),并最终返回一个空数组。

如果您确信结果应该包含至少一个项,则可以检查它是否为空,如果为空,则输入错误状态。

否则,如果您不知道数组是否应该包含值,则另一个选项是覆盖console.warn,以便您可以检测何时将确切的字符串传递给它。

另一种选择是分叉库,以便它(适当地)在找不到时抛出错误,而不是继续并返回空数组,从而使空的成功结果与错误的空结果难以区分。更改

代码语言:javascript
复制
if (!crumb) {
  console.warn('root.Api.main context.dispatcher.stores.CrumbStore.crumb ' +
    'structure no longer exists, please open an issue.');

代码语言:javascript
复制
if (!crumb) {
  throw new Error('root.Api.main context.dispatcher.stores.CrumbStore.crumb ' +
    'structure no longer exists, please open an issue.');

然后您就可以在调用.historical时捕捉到它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73511275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档