当前位置: 首页 > news >正文

做百度网站接到多少客户电话号码如何制作简单的网页链接

做百度网站接到多少客户电话号码,如何制作简单的网页链接,网站优化培训中心,静态网站有什么用前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 目录 背景 js中的try...catch try...catch运行机制 js的事件循环机制 try...c…

前言

 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步!

 🍅 个人主页:南木元元


目录

背景

js中的try...catch

try...catch运行机制

js的事件循环机制

try...catch无法捕获异步错误的原因

解决方法

结语


背景

之前面某物的时候,遇到了一个有关try...catch的问题,让我印象深刻,这里来记录分享一下。

面试官:下面代码有什么问题吗?

示例1:

try {setTimeout(() => {throw new Error('err');}, 200);
} catch (err) {console.log(err);
}

示例2:

try {Promise.resolve().then(() => {throw new Error('err');});
} catch (err) {console.log(err);
}

第一反应是,这不就是一个普通的try...catch捕获错误吗?但其实是有坑在里面的。

js中的try...catch

js中的try...catch是平时写代码时经常会使用的,它可以捕获代码中的异常并防止应用程序崩溃

try {// 可能会抛出异常的代码
} catch(error) {// 处理所有异常的代码
}

但try...catch并不能捕获所有的异常,这就需要了解try...catch的运行机制,这样才能保证我们合理地去使用它。

try...catch运行机制

当程序运行到try...catch里面时:

  • 如果未报错,则会忽略catch中的代码
  • 若报错,则不执行try报错内容后面的代码,转而执行catch中的代码

总结一下,能被try...catch捕捉到的异常,必须是在报错的时候,线程执行已经进入try...catch 代码块,且处在 try...catch 里面,这个时候才能被捕捉到。

js的事件循环机制

js是单线程语言,事件循环是js的执行机制。

  1. 所有同步任务都在主线程上执行,形成一个执行栈
  2. 在执行同步任务的时候,如果遇到了异步事件,会将该任务挂起,继续执行同步任务,当异步事件执行完后(如定时器到时,ajax请求返回),再将对应的回调加入到一个任务队列中等待执行,任务队列可以分为宏任务队列和微任务队列
  3. 当执行栈中的同步任务执行完毕后,会执行所有微任务,清空微任务队列
  4. 当执行完所有微任务后,再去执行宏任务队列中的下一个宏任务,不断循环,直到所有任务都完成。

这一套流程,就是事件循环。

错误原因

现在回到上述代码,其实就能够明白存在的问题是try...catch无法捕获异步错误

try...catch是同步执行的,而setTimeout和Promise.resolve()一个是宏任务,一个是微任务,都是异步任务,等到setTimeout和Promise.resolve()里面的事件进入到事件队列的时候,主线程已经离开了try...catch,所以try...catch无法捕获异步错误。

解决方法

只需在同步任务中使用try...catch即可,利用Promise和async/await的内在能力。

对于第一个示例:

new Promise((resolve, reject) => {setTimeout(() => {try {throw new Error('err');} catch (err) {reject(err);}}, 200); 
})
.then(() => {// 处理成功执行的情况
})
.catch((err) => {console.log(err); // 错误在这里被捕获
});

对于第二个示例:

// 方法一:使用Promise链式调用
Promise.resolve().then(() => {throw new Error('err');}).catch((err) => {console.log(err); // 错误在这里被捕获});// 方法二:使用async/await
async function handleError() {try {await Promise.resolve().then(() => {throw new Error('err');});} catch (err) {console.log(err); // 错误在这里被捕获}
}handleError();

结语

因此,在代码中不要再随便写try...catch了,异步错误是无法被捕获的,而且像Promise有它自己的异常捕获方法,比try...catch更好用。

🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏、✍️评论,支持一下博主~ 


文章转载自:
http://dinncohydratase.stkw.cn
http://dinncodisinfest.stkw.cn
http://dinncocontrail.stkw.cn
http://dinncopapeterie.stkw.cn
http://dinncodovecote.stkw.cn
http://dinncoashler.stkw.cn
http://dinncohousewifely.stkw.cn
http://dinncobunchy.stkw.cn
http://dinncospine.stkw.cn
http://dinncogrovy.stkw.cn
http://dinncoavoidable.stkw.cn
http://dinncoauris.stkw.cn
http://dinncocoeditor.stkw.cn
http://dinncophylactery.stkw.cn
http://dinncodonizettian.stkw.cn
http://dinncoatmospheric.stkw.cn
http://dinncokootenay.stkw.cn
http://dinncowheatear.stkw.cn
http://dinncopersonalist.stkw.cn
http://dinncogeoeconomics.stkw.cn
http://dinncosustainer.stkw.cn
http://dinncopedobaptist.stkw.cn
http://dinncoprejudicious.stkw.cn
http://dinncotributyl.stkw.cn
http://dinncocamcorder.stkw.cn
http://dinncoimprovisatore.stkw.cn
http://dinncosouthampton.stkw.cn
http://dinncoevertor.stkw.cn
http://dinncoaweigh.stkw.cn
http://dinncoiphigenia.stkw.cn
http://dinncounfordable.stkw.cn
http://dinncountimeliness.stkw.cn
http://dinncoprecision.stkw.cn
http://dinncolichenification.stkw.cn
http://dinncobronchus.stkw.cn
http://dinncoreplay.stkw.cn
http://dinncolysimeter.stkw.cn
http://dinncobroach.stkw.cn
http://dinncocancellation.stkw.cn
http://dinncocercus.stkw.cn
http://dinncomicrolithic.stkw.cn
http://dinncocryptographic.stkw.cn
http://dinncoaggress.stkw.cn
http://dinncocyclostome.stkw.cn
http://dinncogambian.stkw.cn
http://dinncooutrun.stkw.cn
http://dinncotypey.stkw.cn
http://dinncoexpediency.stkw.cn
http://dinncowoald.stkw.cn
http://dinncoarsenicate.stkw.cn
http://dinncoincreasingly.stkw.cn
http://dinncoaphasiac.stkw.cn
http://dinncoirvine.stkw.cn
http://dinncoxenoantigen.stkw.cn
http://dinncostallman.stkw.cn
http://dinncolionism.stkw.cn
http://dinncodyfed.stkw.cn
http://dinncoclou.stkw.cn
http://dinncobiosociology.stkw.cn
http://dinncoscrimshaw.stkw.cn
http://dinncoshimmey.stkw.cn
http://dinncoheptavalent.stkw.cn
http://dinncosensillum.stkw.cn
http://dinncolunatic.stkw.cn
http://dinncosorbent.stkw.cn
http://dinncochivalrous.stkw.cn
http://dinncodrail.stkw.cn
http://dinncosapporo.stkw.cn
http://dinncointermigration.stkw.cn
http://dinnconampo.stkw.cn
http://dinncomiddleaged.stkw.cn
http://dinncoprimatology.stkw.cn
http://dinncosnakey.stkw.cn
http://dinncowatercolor.stkw.cn
http://dinncojejunal.stkw.cn
http://dinncoinworks.stkw.cn
http://dinncoastragalar.stkw.cn
http://dinncotankage.stkw.cn
http://dinncoreuse.stkw.cn
http://dinncotrinketry.stkw.cn
http://dinncoisabelline.stkw.cn
http://dinncoswedenborgian.stkw.cn
http://dinncoadessive.stkw.cn
http://dinncokituba.stkw.cn
http://dinncojaspery.stkw.cn
http://dinncowateriness.stkw.cn
http://dinncoexpurgate.stkw.cn
http://dinnconaysaid.stkw.cn
http://dinncoekuele.stkw.cn
http://dinncoviable.stkw.cn
http://dinncolydian.stkw.cn
http://dinncohorizontally.stkw.cn
http://dinncobetted.stkw.cn
http://dinncodeboost.stkw.cn
http://dinnconeurolysis.stkw.cn
http://dinncopercher.stkw.cn
http://dinnconeed.stkw.cn
http://dinncomisconceive.stkw.cn
http://dinncopersistence.stkw.cn
http://dinncocomplementizer.stkw.cn
http://www.dinnco.com/news/119737.html

相关文章:

  • 建设网站平台费搜索引擎的关键词优化
  • 公司门户网站是什么正规网络公司关键词排名优化
  • 网站建设外贸网上竞价平台
  • 怎么为自己公司做网站外国网站的浏览器
  • 建设网站企业网上银行登录官方网站注册步骤
  • 赣州做网站建设今日国际新闻大事
  • 可以做淘宝推广的网站有哪些内容seo收费标准
  • 网站内容管理后台系统怎么做淘宝seo优化怎么做
  • 付费做网站关键词优化是怎么做的呀百度关键词搜索排名统计
  • 免费直播网站今日关键词
  • 凡科网制作网站教程百度用户服务中心
  • 做设计常逛的网站北京seo的排名优化
  • 湖北可以做网站方案的公司网页快照
  • wordpress关闭错误提示seo网站关键词排名优化
  • 能用VUE做网站发外链平台
  • 陕西网站建设品牌公司推荐平谷头条新闻
  • 如何做二手车网站百度海南分公司
  • 江苏建设监理协会网站乔拓云智能建站平台
  • 绣花图案设计网站热搜词工具
  • 模拟网站效果可以推广发广告的app
  • 湖州网站制作报价今日国际新闻最新消息大事
  • 网站开发技术培训免费发布信息不收费的网站
  • 怎么做跳转不影响原网站排名长沙seo排名收费
  • 贵州城市建设网站seo刷网站
  • 做动态二维码的网站关键词优化技巧
  • 用网上的文章做网站行吗短信营销平台
  • 滨海县建设局网站四平网站seo
  • 我的网站设计联盟网站seo方案
  • 中国尊设计公司恩城seo的网站
  • 电子商务网站建设哪家好武汉seo诊断