调用Async / await函数的catch方法时未处理错误?

时间:2020-10-03 15:51:06

标签: javascript asynchronous async-await try-catch

试图掌握异步代码的概念。为什么在调用函数时错误消息不会传递给链接的catch方法?

也将感谢您对我如何构造错误处理的任何反馈。在阅读完我的内容之后,您应该始终抛出错误,并且永远不要返回错误,但是在这种情况下有意义吗?尝试通过使用DRY的概念对它进行未来验证,因此我可以通过减,乘和除(也不能除以零)来实现它。

const timer = ms => new Promise(resolve => setTimeout(resolve, ms));

const input = (num1, num2) => {
  if (!Number.isInteger(num1) || !Number.isInteger(num2)) {
    return new Error('Provide whole numbers only');
  }
  return null;
};

const asyncAdder = async (arg1, arg2) => {
  try {
    await timer(500);
    const validate = input(arg1, arg2);
    if(validate){
      throw validate;
    }
    return number1 + number2;
  } catch (error) {
    console.log(error.message);
  }
}

asyncAdder(1,2.1).then(res => console.log(res)).catch(err => console.log(err))

我正试图在Promise和异步/等待之间回溯至第四,以理解这种关系,因此这两个应该代表彼此。因为当使用promise时,它将被捕获在catch方法中。感谢您的反馈。

const promiseAdder = (arg1, arg2) => {
  const validate = input(arg1, arg2);
  return timer(500).then(() => new Promise((res, rej) => {
    if (validate) {
      rej(validate);
    } else {
      res(arg1 + arg2);
    }
  }));
};

0 个答案:

没有答案
相关问题