JS中如何有效处理异步操作中的错误小结?

更新于
2026-10-02 05:37:21
0阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2746个文字,预计阅读时间需要11分钟。

引入try+catch后,我们知道无法捕获setTimeout异步任务中的错误,原因是什么?以及异步代码在JS中是特别常见的,我们该如何处理?

无法捕获的情况:function main() { try {

引入

我们都知道 try catch 无法捕获 setTimeout 异步任务中的错误,那其中的原因是什么。以及异步代码在 js 中是特别常见的,我们该怎么做才比较?

无法捕获的情况

function main() { try { setTimeout(() => { throw new Error('async error') }, 1000) } catch(e) { console.log(e, 'err') console.log('continue...') } } main();

这段代码中,setTimeout 的回调函数抛出一个错误,并不会在 catch 中捕获,会导致程序直接报错崩掉。

所以说在 js 中 try catch 并不是说写上一个就可以高枕无忧了。难道每个函数都要写吗,
那什么情况下 try catch 无法捕获 error 呢?

异步任务

  • 宏任务的回调函数中的错误无法捕获

上面的栗子稍微改一下,主任务中写一段 try catch,然后调用异步任务 task,task 会在一秒之后抛出一个错误。

阅读全文

本文共计2746个文字,预计阅读时间需要11分钟。

引入try+catch后,我们知道无法捕获setTimeout异步任务中的错误,原因是什么?以及异步代码在JS中是特别常见的,我们该如何处理?

无法捕获的情况:function main() { try {

引入

我们都知道 try catch 无法捕获 setTimeout 异步任务中的错误,那其中的原因是什么。以及异步代码在 js 中是特别常见的,我们该怎么做才比较?

无法捕获的情况

function main() { try { setTimeout(() => { throw new Error('async error') }, 1000) } catch(e) { console.log(e, 'err') console.log('continue...') } } main();

这段代码中,setTimeout 的回调函数抛出一个错误,并不会在 catch 中捕获,会导致程序直接报错崩掉。

所以说在 js 中 try catch 并不是说写上一个就可以高枕无忧了。难道每个函数都要写吗,
那什么情况下 try catch 无法捕获 error 呢?

异步任务

  • 宏任务的回调函数中的错误无法捕获

上面的栗子稍微改一下,主任务中写一段 try catch,然后调用异步任务 task,task 会在一秒之后抛出一个错误。

阅读全文