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

官方网站免费制作手机端视频网站模板

官方网站免费制作,手机端视频网站模板,seo关键词优化教程,网站制作免费try-catch 是 JavaScript 处理错误的一种重要机制。try 块用来包含可能会出错的代码,catch 块用来处理 try 块中的错误。使用 try-catch 的主要目的是在代码出错时不会导致整个程序崩溃,可以让错误被妥善处理。一个典型的 try-catch 代码块如下: try {// 可能出错的代码 } cat…        try-catch 是 JavaScript 处理错误的一种重要机制。try 块用来包含可能会出错的代码,catch 块用来处理 try 块中的错误。使用 try-catch 的主要目的是在代码出错时不会导致整个程序崩溃,可以让错误被妥善处理。一个典型的 try-catch 代码块如下: try {// 可能出错的代码 } catch (error) {// 出错时的处理代码 } 当 try 块中的代码执行出错时,会触发 catch 块来捕获这个错误。catch 块会接收到一个 Error 对象,包含了错误的名称、消息和堆栈信息。我们可以通过这个 Error 对象来分析错误原因,也可以针对不同的错误进行不同处理。相比于没有错误处理导致程序崩溃的情况,使用 try-catch 可以让我们的程序在应对错误时更加健壮。它是 JavaScript 语言中非常重要的一个机制。掌握 try-catch 的使用可以大大提高我们开发应用的能力。 但是try-catch并不像表面上的这么简单熟练的使用try-catch并不是一件简单的事情下面就让我们来探索一下try-catch的特性。 让我们打开mozilla官网搜索try-catch看官网的第一句描述 来让我们把重点用红圈圈起来 注意是尝试的语句块这点很重要知道这一点才能真正的理解如何使用try-catch下面给大家展开讲一讲。 scripttry {function error(params) {console.log(a);}} catch (error) {console.log(error, error);}error() /script 代码如上我写了一个try-catch语句然后在try中创建了一个函数输出一个并不存在的变量a按理来说这里一定会报错的 报错就会被catch接住所以日志里的输出应该是这样 但是事实却是 为什么这里的错误没有被catch接住呢 因为在try代码块中,仅仅是定义了一个函数error(),这个步骤不会产生错误。真正导致错误的代码是error()函数的调用,也就是试图读取变量a的操作。但是这个操作是在try代码块之外执行的。由于错误发生在try之外,所以不会被catch语句捕获。catch语句只能捕获在try代码块内发生的错误。对于try块外的错误,catch无法捕获到。 总结一下: 1. try块内只定义了函数,不会产生错误。 2. 真正的错误发生在try块外调用函数时。 3. catch语句只能捕获try块内发生的错误。 4. 由于错误发生在try块外,所以catch未能捕获到。 所以如果真的需要捕获到error函数里的错误的话就需要这样写 好的讲完这些我们就可以进行下一步理解现在我们代码如下 scripttry {setTimeout(() {console.log(a);}, 1000);} catch (error) {console.log(error,error);} /script 肯定会有人说这里会报错的代码就写在try里肯定可以接住报错了吧事实上这里的报错也不会被接住 为什么呢为什么这里的报错不会被接住其实原因很简单因为try-catch是同步的我们仔细的看一眼这个代码都做了什么 1. 定义了一个try-catch语句块,准备捕获错误。 2. 在try代码块内,设置了一个定时器,在1秒后执行读取变量a的操作。 3. try代码块内没有错误,所以执行完毕,主线程继续执行。 4. 1秒后,定时器触发,执行读取a的操作,此时发生错误。 5. 但是此时已经在try-catch语句块外了,所以错误不会被捕获。 6. 因为定时器是异步执行的,已经脱离了try-catch的同步错误捕获范围。 总结关键点: try-catch是同步捕获错误的。 定时器引发的错误是异步的,不在try-catch捕获范围。执行离开try-catch块后,不再生效。在try语句运行的时候其内包裹的代码并没有报错所以这里的错误不会被捕捉到。 由上可得想要接住定时器内的报错需要保证定时器内部的代码和try-catch语句在同一时间段运行所以我们可以使用定时器的第三个参数来实现这样一个函数 scriptsetTimeout(error, 1000,() {console.log(a);});function error(callBack) {try {callBack()} catch (error) {console.log(error, error);}} /script定时器的三个参数第一个是定时器运行的任务第二个是多久之后的未来执行第三个是传入给定时任务的参数我们在第三个参数里传入我们真正需要运行的任务然后在error函数里执行这样就可以保证try-catch语句和定时任务的同时性了。  通过这种方式,我们实现了以下效果: 将定时器要执行的代码抽象为一个独立函数callBack。将callBack函数作为参数,传入定时器的第三个参数。在error函数内,使用try-catch语句引用callBack函数。这样,定时器的任务就在try-catch内运行了,错误能被捕获。 如果你还能坚持读到这里我真的很感谢你下面是我的一些碎话在获得了上面的知识后我们扩展一下为什么无法接住promise.then里的报错很简单因为同步性的问题我们在写then方法的时候真正的报错并没有出现 let pro new Promise(res {res(12)})try {pro.then(e {console.log(a);})} catch (error) {} 如果你看懂了上面的知识点就会明白这里如果要接住报错就必须要在then里面写try-catch就像这样 但是这样就会显得代码过于臃肿而且如果要做到万无一失的话就要在所有的then回调里写try-catch那也太麻烦了所以promise才会有catch方法就是为了保证代码的易读性 从代码上来看catch比在then里写try-catch要优雅太多了 。 通过本文的讨论,我们可以对 JavaScript 的错误处理有一个更全面的理解: 1. try-catch 语句可以捕获同步代码中的运行时错误,但是对于异步回调函数中的错误将无能为力。 2. 异步回调函数的错误需要通过参数传递以及try-catch的嵌套,将其纳入同步代码的错误处理范围中。 3. Promise 的 catch方法可以较为优雅地处理异步函数中的错误。 最后我还想声明一点事件回调及老式的异步代码仍需注意通过回调函数的参数以及try-catch的作用域,来保证错误能被正确捕获。 本文讨论的例子可以作为日常开发的参考,也可作为进一步深入理解 JavaScript 异步及错误处理的起点。异步编程已成为前端开发的重要一环,require/async/await 的普及也使异步代码越发常见。期待以后能继续与您讨论 JavaScript 异步错误处理的更多细节及应用。如果需要修改或调整结尾内容,请告知我。谢谢!
http://www.dnsts.com.cn/news/32394.html

相关文章:

  • 网站域名空间百度搜索的优势
  • 网站的建设服务中心上海网络推广产品
  • 大足网站建设公司单页的网站怎么做的
  • 珠海服务好的网站建设天津建设工程信息网吧
  • 网站如何做监测链接十大外贸网站
  • 打开网站自动跳转代码个人网站一年多少钱
  • 网站后台工程师百度站长统计
  • 佛山营销网站建设联系方式苏州网站建设企业网站制作
  • 17素材网下载超级优化液
  • 哪个网站是可以做书的造一个官方网站
  • 网站建设讲话稿贵阳公司网站
  • 莆田市建设局网站WordPress 附件上传
  • 高端网站推荐有了域名和空间怎么做网站内容
  • 网站设计成手机手机上如何制作网站
  • 虹口建设机械网站制作营销型企业网站的策划方案
  • 南京 网站开发呼和浩特建设厅网站首页
  • 石家庄网页开发建设网站搜索引擎优化怎么做
  • 如何创建个人网站赚钱开发小程序定制公司
  • 成都建工网站广州seo优化费用
  • 东莞专业网站制作设计网站建设 网页开发
  • 西宁网站建设建站电影购票网站开发背景
  • 公司网站怎么做才能有官网二字企业网站推广的策略有哪些
  • 课程网站建设技术花80亿美元建空间站
  • 做网站定制开发的公司平台设计理念
  • 地图 添加到网站网站的根目录怎么找
  • wordpress老网站重装法设计软件coreldraw
  • 如何优化网站性能百度app
  • 网站定制公司哪家最权威西安的网页设计公司排名
  • 深圳网站建设哪里可以做自媒体的网站
  • app网站建设制作asp.net网站开发流程及相关工具