kangduu / front-end-camps

Front-end learning, interviews, question banks, algorithm camps.
https://kangduu.github.io/front-end-camps
MIT License
2 stars 0 forks source link

Q:JavaScript中try...catch...可以捕获到Promise错误吗? #28

Open kangduu opened 9 months ago

kangduu commented 9 months ago

A:不可以,应该在Promise链中使用catch方法。

try {
  // 在这里使用Promise
  let promise = new Promise((resolve, reject) => {
    // 模拟异步操作
    setTimeout(() => {
      // 抛出一个错误
      reject(new Error('Promise rejected'));
    }, 1000);
  });

  // 使用await等待Promise的结果
  await promise;

} catch (error) {
  // 这里的代码不会捕获到Promise中的错误,因为Promise错误通常在Promise链中被捕获
  console.error('Caught an error:', error);
}

正确操作:

let promise = new Promise((resolve, reject) => {
  // 模拟异步操作
  setTimeout(() => {
    // 抛出一个错误
    reject(new Error('Promise rejected'));
  }, 1000);
});

promise
  .then(result => {
    // 正常情况下的处理
    console.log('Promise resolved:', result);
  })
  .catch(error => {
    // 捕获Promise中的错误
    console.error('Caught an error:', error);
  });