首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.catch而不是try/catch块

使用.catch而不是try/catch块
EN

Stack Overflow用户
提问于 2019-07-26 10:20:38
回答 1查看 72关注 0票数 0

而不是使用传统的try/catch在发送请求时处理错误,如下所示

代码语言:javascript
运行
复制
let body;
try {
    const response = await sendRequest(
        "POST",
        "/api/AccountApi/RefundGetStatus",
        JSON.stringify(refundParams),
        undefined,
        headers
    );
    body = response.body;
} catch (error) {
    log("error", "An error occurred sending a request", { error });
    throw createError("An error has occurred", DefaultErrors.API_ERROR);
}

我在想,是否有可能达到同样的结果,重写错误处理,如下所示。

代码语言:javascript
运行
复制
const response = await sendRequest(
    "POST",
    "/api/AccountApi/RefundGetStatus",
    JSON.stringify(refundParams),
    undefined,
    headers
).catch((err: any) => {
    log("error", "An error occurred sending a request", { err });
    throw createError("An error has occurred", DefaultErrors.API_ERROR);
});

上面的代码块是否能够处理未定义的错误和可能的JSON.parse错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-26 11:40:19

这两种方法都可以使用

代码语言:javascript
运行
复制
try { 
  await sendRequest()
} catch (err) {
  // do something
}

代码语言:javascript
运行
复制
sendRequest().catch(err => { // do something})

来捕捉错误。

下面是一个简单的示例,您可以将其粘贴到typescript playgound中进行尝试。

代码语言:javascript
运行
复制
const sendRequest = (str: string) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      console.log('get response');
      reject('error message');
    }, 2000)
  })
}

const test1 = async ()=> {
  try{
    await sendRequest('data');
  } catch (err) {
    // will print 'err===> error message'
    console.log('err===>', err)
  }
}

const test2 = async ()=> {
  sendRequest('data').catch(err => {
    // will print 'err===> error message'
    console.log('err=====>', err)
  })
}

test1();
test2();

test1()和test2()都会捕获错误。

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

https://stackoverflow.com/questions/57212334

复制
相关文章

相似问题

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