




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章 JavaScript错误与异常处理,错误报告、错误处理以及代码调试,一直被业界认为是JavaScript脚本语言的弱项。但随着ECMAScript 3 和ECMAScript 4规范的推出以及一些新的调试器的出现,该局面有所改观。 如果不在代码中进行适当的错误处理以及掌握良好的调试方法和技巧,面对一堆纷繁复杂的JavaScript脚本代码时,错误查找和代码调试将成为令人非常头痛的问题。本章将介绍JavaScript在不同浏览器中的错误报告形式、错误和异常的处理方法以及一些常用的调试方法,力求让读者在JavaScript脚本编程中遇到代码错误和异常时可以坦然处之,而不至于束手无策。,13.1 为何进行错误处理,在JavaScript脚本语言的发展过程中,由于早期的浏览器不支持错误处理语句,而只能在函数中返回-1、true或false等特殊的值,并根据这些返回值来判断代码是否出现错误 JavaScript脚本语言在版本更替过程中,提供了越来越多的错误处理方法,使开发者能快速确定发生了什么错误,以及定位错误发生的位置,从而大大提高了程序的正确性、可靠性,同时也很大程度上缩短了开发周期,具有十分重大的意义。,13.2 错误与异常的关系,JavaScript中的错误可以分为语法错误和运行错误。语法错误一般简称为错误(Error),而运行错误一般也叫做异常(Exception)。错误和异常同属于错误,但是也有着本质的区别。下面将分别予以介绍,并分析它们之间的异同点。,13.2.1 错误,错误,指语法性错误,即是偏离了可接受的代码行为的一个动作或者实例。 在JavaScript脚本中,一旦有语法错误出现,整个程序不能正常启动运行。类似于C、C+、Java等高级语言,其语法检查在程序编译或解释时进行,一旦有语法错误存在,整个页面则无法正常装载,从而不能正常启动运行。,13.2.2 异常,异常,指运行时的错误,即程序已经通过编译或者解释,在程序执行过程中出现的一个事件中断了正常指令的运行。异常通常由一些非法的动作所引起。 在JavaScript脚本中,异常的影响范围为该代码所在的线程,而其他不依赖于出现异常处的代码的线程则可以正常运行。,13.2.3 异同点,错误和异常都是程序的错误,皆为开发者所不能容忍。错误是语法性的错误,发生在程序编译或者解释时,其直接的后果将是程序无法正常启动;异常是非法动作所引起的错误,发生在程序运行时,其直接的后果是使程序不能正常地运行。,13.3 不同浏览器环境中的错误报告,不同浏览器内部使用不用的JavaScript解释器,因此错误报告的形式也是不尽相同的。有的是直接弹出错误消息,如Microsoft IE;有的只是简单地把错误消息记录在控制台中,如Mozilla。本节简要的介绍目前流行的几种浏览器对JavaScript的错误报告形式。,13.3.1 Windows IE,Windows IE中对JavaScript的错误报告形式是多样的。默认情况下,某些IE版本会弹出一个错误的警告框,并列出错误类型和错误所在的行数,如图13.4所示;某些IE版本只是在页面状态栏中显示:“页面出现错误”。,13.3.2 Mozilla,Mozilla是一个自由的、源码开放的浏览器(或核心),体积小速度快,为目前最流行的浏览器之一,Firefox浏览器为其中一种。Mozilla的实现完全不同于Microsoft IE,采用标签式浏览,并可以便捷地添加或扩展插件。,13.3.3 MacOS Safari,在众多浏览器中,MacOS Safari对JavaScript脚本错误调试的支持是最不尽如人意的。在默认的情况下,Safari不会产生任何错误报告。为了浏览器能报告JavaScript脚本错误,可以通过下列步骤完成: 打开一个命令终端; 运行命令:defaults write com.apple.Safari IncludeDabugMenu 1; 重新启动Safari浏览器; 此时浏览器工具栏成功添加“Debug”按钮,单击该按钮,并选上“Log JavaScript Exceptions”选项; 在Application/Utilities下打开Console.app,则Safari在该控制台上报告JavaScript错误。,13.3.4 MacOS IE,MacOS IE在默认情况下,对JavaScript错误也不产生任何报告。为了浏览器能报告JavaScript脚本错误,可以通过下列步骤完成: 选择菜单栏“编辑查看”,打开“查看”对话面板; 选择“Web浏览器”选项卡,单击“Web设置”按钮,把其中“允许运行Script脚本(Enable Scripting)”和“显示错误报告(Show Scripting Error Alerts)”两个选项选中。 通过以上步骤,如果页面中遇到JavaScript脚本错误,MocOS IE浏览器弹出警告框提示用户错误的类型。,13.3.5 Opera 7,和Mozilla相似,Opera 7同样以JavaScript控制台的方式来记录页面中的JavaScirpt脚本错误信息。可以选择菜单栏“窗口特殊插件JavaScript控制台”来打开此控制台。当页面中有JavaScript错误发生时,则在此控制台中记录下来,其错误信息包括:错误类型、错误信息、错误发生的线程以及发生错误的文件和行数等。,13.3.6 小结,上面几个小节分别简要介绍了不同浏览器环境中的错误报告形式,从中可明显地看出,各个浏览器平台均需进行彼此不同的设置,在浏览器载入包含错误或异常代码的文档时才能自动识别错误或异常代码的所在。 既然错误对脚本程序具有很大的危害,在JavaScript脚本中进行相应的错误处理显得非常有必要。一般而言,JavaScript脚本提供了两种经典的错误处理方法:使用onerror函数和try/catch结构,下面分别介绍这两种错误处理方法的具体用法及使用场合。,13.4 使用onerror事件进行错误处理,onerror事件为浏览器对象模型(BOM:Browser Object Model)中定义的标准事件,用于捕捉代码的错误,并引导开发人员进行相应的处理,较之使用try/catch语句进行错误处理的方式,该方法简单明了,首先介绍BOM中定义的onerror事件。,13.4.1 onerror事件,onerror事件是BOM的标准事件之一,只要页面中发生错误,该事件立即被激活,开发者仅需添加事件处理函数即可。onerror事件被激活后,系统调用其对应的事件处理函数进行响应。在JavaScript脚本中,onerror事件处理函数可为如下两种结构: 函数声明与函数体合并 函数声明和函数体分离:,13.4.2 onerror错误处理方法,onerror事件被激活的同时,传递3个参数给事件响应函数: Error Message:错误报告消息,如缺少右括号、对象没有属性方法等; URL:发生错误的文件的URL地址; Line Number:错误所在的具体行数。 程序运行后,单击页面中“异常”按钮,13.4.3 onerror错误处理方法的优缺点,onerror错误处理方法简洁易行,仅需添加onerror事件响应函数即可,获得的信息也较为丰富,包括错误信息、产生错误的文件以及错误所在行数等。 不幸的是,onerror事件是浏览器对象模型(BOM)中定义的句柄,并不被特定的浏览器(如Safari等)所支持。也即是说,并不是所有的浏览器都支持onerror事件。即使在支持onerror事件的浏览器中,不同浏览器的处理方式也不尽相同。基于此,很多开发者往往偏爱于用第二种处理方式即使用try/catch结构来处理脚本中出现的错误。,13.5 使用try/catch结构进行错误处理,try/catch结构原本为Java等高级语言中才支持的经典错误处理方法,用于监视程序代码中隐藏的错误和异常。由于该结构处理程序代码隐藏的错误和异常非常有效,ECMAScript规范引入了在JavaScript脚本中获得支持的try/catch结构,来解决JavaScript脚本较为薄弱的错误报告、错误处理以及代码调试环节,首先来了解JavaScript脚本中的try/catch结构。,13.5.1 try/catch结构,熟悉Java程序设计语言的读者,对try/catch结构应该不会陌生,因为try/catch结构是Java语言中用来处理异常的经典结构。,13.5.2 Error对象,在上面的实例中,得到异常报告:“catch捕捉到异常!”。开发者同样会遇到使用onerror方法面临的突出问题:关于错误的信息量太少。事实上,catch部分引入的参数exceptionError对象。 Error对象有两个属性: Name:Error对象的类型,Error对象是一个基类,其下面还有若干子类。 Message:Error对象中包含的错误信息。,13.5.3 嵌套try/catch结构,虽然JavaScript不支持一个try关键字带多个catch的结构,但其支持嵌套的try/catch结构。嵌套try/catch结构可十分容易地解决部分读者关于“catch里面又发生异常怎么办”的问题。,13.5.4 throw抛出异常,try/catch结构不仅可捕捉到系统抛出的异常,也可以捕捉到开发者抛出的异常。在ECMAScript 3规范后续的版本中,开发者都可使用throw抛出自定义的异常。在JavaScript脚本中可以使用throw抛出任意异常,包括数字、字符串、布尔值或者对象。,13.6 脚本代码调试,类似于C、C+、Java等高级编程语言,调试也是JavaScript脚本程序开发过程中不可或缺的步骤,是程序能正常发挥作用的重要保证。当程序结果不正确或需查看其中变量的动态变化情况时,开发者就要对代码进行跟踪调试,以定位错误并修正代码。在JavaScript脚本中,对于短小简单的脚本程序,开发者可以用alert或者Java控制台来帮助调试。但对于比较庞大的脚本程序,以上两种方法已经不能满足调试的需求,而只能借助于调试器,本节将介绍两个常用的调试器:Microsoft Script Debugger和Venkman。,13.6.1 使用alert语句跟踪调试,alert调试方法就是在脚本中特定位置插入alert语句,对代码的运行情况进行有目的地跟踪,以定位错误和异常。虽然该方法相对比较笨,但是alert调试是最简单而实用的方法。相信很多编过C程序的读者,在调试C语言程序的时候喜欢用printf()函数打印一些信息,只要printf()函数能成功打印就表明程序能正常运行到此位置(相当一个断点),从而判断错误发生在该语句之后。,13.6.2 使用Java控制台,在支持LiveConnect技术的浏览器中(Microsoft IE不支持)可用Java控制台来协助脚本调试,该方法和alert调试方法类似,区别在于它使用“java.lang.System.out.println()”来代替alert语句。,13.6.3 使用Microsoft Script Debugger调试器,启动Microsoft Script Debugger调试器还可以使用如下方法: 若在页面运行过程中出现错误,在弹出的“错误”警告框询问“是否要进行调试”信息时,单击是按钮,启动Microsoft Script Debugger调试器; 在JavaScript脚本代码中嵌入debugger命令,当运行至debugger命令处时,浏览器启动Microsoft Script Debugger调试器,13.6.4 使用Venkman调试器,Venkman是Mozilla开发的JavaScript调试器,其名字来源于电影捉鬼者里面主角的名字。作为优秀的JavaScript调试器之一,其强大的调试功能不愧于“捉鬼者”的称号。其版本不断更新,最新的版本为Venkman0.9.86。,13.7 本章小结,本章主要介绍了JavaScript中的错误与异常处理。在阐述进行错误处理的重要性的同时,比较了错误与异常的异同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业购车按揭合同
- 2025【各类商业合作范本】-【专业合同协议模板库】国内专利技术转让合同
- 新人教版必修第四章《细胞的物质输入和输出》教学设计
- 公考西藏真题2025
- 2024年二年级品生下册《我喜欢美好的环境》说课稿 鄂教版
- 马鞍山事业单位笔试真题2025
- 化肥厂办公用品分类细则
- 居民健康医疗服务合同协议
- 高中语文 第四单元 第12课 飞向太空的航程说课稿1 新人教版必修1
- 5.1.降低化学反应活化能的酶教学设计-2023-2024学年高一上学期生物人教版必修一
- 养猪场安全生产应急预案
- 2025年党建工作应试题库及答案
- 2025秋部编版(2024)八年级上册语文上课课件 第三单元 阅读综合实践
- DBJ50-T-047-2024 建筑地基基础设计标准
- 用英语讲好中国故事课件
- 呼吸科出科小讲课
- 2025年中国红富士苹果市场深度调研研究报告
- 读书分享会红色书籍《保卫延安》课件
- 钢结构项目可行性研究报告(立项申请报告)模板
- 四川成都经济技术开发区(龙泉驿区)“蓉漂人才荟”招聘笔试题库2025
- 解除委托退费协议书
评论
0/150
提交评论