如何构建一个长尾词来概括JS异步错误捕获的要点?
- 内容介绍
- 文章标签
- 相关推荐
本文共计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 会在一秒之后抛出一个错误。

