《《错误处理》课件.ppt》由会员分享,可在线阅读,更多相关《《错误处理》课件.ppt(18页珍藏版)》请在三一办公上搜索。
1、第6章 错误处理,在上一章中,对JavaScript的面向对象特征进行了具体的讲解。在面向对象的语言中,都提供了错误处理这一关键性的语法和功能。采用了错误处理机制的JavaScript,能够更好进行开发以及丰富客户体验。,6.1 错误和异常,错误是指程序在运行过程中,遇到的导致不可运行的障碍。异常一般是指运行期错误,或者与预期结果不一致的运行结果。在高级语言中,错误处理至关重要,.NET和Java都内置大量的错误类,以便开发者进行错误处理。本节就将向读者讲解JavaScript中的错误处理。,6.1.1 什么是错误、什么是异常,JavaScript中错误一般有3种:语法错误、逻辑错误、运行时错
2、误。语法错误,一般是指JavaScript代码中语法不正确,解析器无法正常解析而引发的错误。语法错误很好识别,并非常容易排除。典型的语法错误如下所示。document.write(hello);以上代码,由于hello未定义和赋值,所以编译器无法解释,自动停止执行这句以后的代码。但是请注意,由于沙箱安全机制的限制,JavaScript中只有在同1个线程中的代码会受到语法错误的影响。其他线程中的代码和其他外部引用Js文件中的代码,只要没有错误代码就可以继续运行。通常语法错误很容易被发现及排除,所以一般性语法错误本章不进行专门讲述。,6.1.2 异常处理的重要性,在早期的浏览器中,并没有异常处理机
3、制。一般情况下,函数通过返回1个无效的值,来提示开发.者或用户发生了异常。在上一节的异常示例中,可以改写成这样进行异常警告:function Week()var i=0;var j=15;if(i=0)return i;elsereturn j/i;,6.2 错误报告,错误报告是浏览器内置的功能,当JavaScript脚本在前台进行解释执行遇到错误,而没有异常处理时,浏览器发出的错误提示。由于JavaScript在浏览器中实现方式不尽相同,报错方式也五花八门。在本节中,可以对错误报告有1个深入的了解。,6.2.1 在IE中使用错误报告,IE是Windows默认浏览器,IE提供了两种错误报告方式
4、。当客户安装了脚本调试器(Microsoft Script Debugger),IE会采用使用消息框,通知客户选择是否使用调试器的方式报告错误。如图所示。,6.2.2 FireFox中的错误处理,FireFox中内置了JavaScript控制台,不仅仅记录错误,还可以发出警告。访问FireFox的JavaScript控制台,可以在菜单栏下的错误控制台中找到。如图所示。,6.3 处理错误,错误可以通过浏览器支持的错误报告方式得知,但是异常和错误还是需要开发者进行一定的处理。JavaScript有两种错误处理方式,BOM对象的onerror事件处理函数、try.catch语法结构来处理异常。本节将
5、揭示两种方式的优点、缺点。,6.3.1 onerror事件处理程序,当页面中JavaScript代码出现了错误,就会触发onerror事件。典型的onerror错误处理代码如下所示。虽然onerror错误处理可以进行错误处理,但是onerror错误处理有着先天缺陷:(1)onerror是BOM对象的一部分,非常依赖浏览器的实现。在IE中,当onerror事件触发时,会继续执行onerror事件处理以后的代码。但在FireFox中,当onerror事件触发时,所有代码都会终止。(2)onerror仅仅能处理第1个页面代码中出现的第1个异常,而且仅仅能处理onerror事件处理函数代码之后代码中出
6、现的错误。因为出现了多个异常,也只能触发一次onerror事件处理程序。在JavaScript还有另一种错误处理的方式,请仔细阅读节。,6.3.2 try catch 语法结构,try catch 语法结构在大多数面向对象的语言中都得到了实现,JavaScript也支持这个重要的异常处理功能,任何支持ECMAScript第3版的浏览器都支持JavaScript中的try catch 语法。但是请注意JavaScript中try catch 结构仅仅只有1个catch块,因为JavaScript是弱类型的语言,无法得到错误确切类型,所以所有错误都由1个catch块进行处理。trywindow.n
7、oFoundFunction();catch(exception)alert(catch 语句块);finallyalert(finally 语句块);,6.4 常用JavaScript调试技巧,在上一节中,学习了基本的错误处理。错误处理是开发者丰富的客户体验的一种手段,但是还有很多错误是无法进行错误处理的,比如说语法错误和浏览器兼容性带来的错误,都是不能通过错误处理规避。本节将讲述如何进行JavaScript调试和调试器的使用。JavaScript一直没有一款良好的开发工具,给JavaScript的发展带来了很大的阻碍,但是并没有阻止聪明的开发者的脚步。节将介绍一种历史最悠久,最笨拙的Jav
8、aScript调试方法。,6.4.1 使用alert()进行调试,使用alert()调试是JavaScript开发者使用的最早和最频繁的调试方式,也是最土的一种(笔者曾经一直认为JavaScript调试技术是JavaScript设计者设计的1个最大败笔)。使用alert()调试大量JavaScript代码时,应遵循以下守则:(1)对所有函数或代码分段都添加alert(),并根据调用先后顺序对所有添加的alert()进行排序。(2)当确定错误位置以后,就可以使用alert()弹出对话框来检查变量的值。但是请注意,尽量避免将alert()放入循环中。因为如果遇到死循环,关掉浏览器都很困难。,6.4
9、.2 抛出自定义错误,前面学习了throw关键字,实际上使用throw关键字可以很方便的调试JavaScript代码。抛出自定义错误,可以准确的得知错误出现的位置和规避某些错误。以下的代码演示了如何抛出自定义错误:function createError(message)if(typeof(message)=undefined)throw new Error(传入的对象未定义);elsealert(message);,6.4.3 常见的JavaScript调试器,对于.NET程序员而言,IE一定是使用最多的浏览器了。Microsoft提供了在IE中使用的JavaScript调试器即Micros
10、oft Script Debugger。Microsoft Script Debugger是第一种应用于IE中的脚本调试工具,Microsoft Script Debugger有两个版本的安装文件:scd10chs.exe、dbg10chs.exe。scd10chs.exe支持Windows NT4.0以上的版本即Windows XP或Windows 2003,dbg10chs.exe支持Windows 2000或Windows 98等低版本的操作系统。实际上Microsoft Script Debugger第一次出现在Microsoft Visual Studio 6.0中,最早实际上是为了
11、ASP调试工具出现的。在后期微软扩展了Microsoft Script Debugger的功能,开始支持Jscript的调试以及JavaScript的调试。,6.5 常见的JavaScript编写工具,在上一节中,讲解了抛出错误和Microsoft Script Debugger,但是还是不能根本解决在JavaScript日常编写时出现的一些错误,本节将讲解JavaScript常见编译器,来解决编写时的错误排除和提高JavaScript编写的效率问题。本节将讲解两种比较优秀的JavaScript编译器,主要推荐Aptana,笔者也一直在使用Aptana编写JavaScript。,6.5.1 常
12、见的JavaScript编写工具,在JavaScript开发中,由于一直缺乏一款较为优秀的JavaScript编写工具,导致JavaScript一直在后台开发者中普及很慢。大多数程序员还停留在使用记事本,或者代码变色功能记事本开发JavaScript的阶段。虽然这样也可以开发Ajax应用,但是在今天Ajax开发中,大量的Js脚本库的流行的年代,使用记事本一类的工具无疑是一种愚蠢的行为。笔者一直认为工欲善其事,必先利其器,使用Dramwaver和Front Page以及记事本已经不能适应这个时代。对于大多数.NET程序员,Visual Studio.NET(以下简称VS)系列是使用最频繁、最擅长
13、的开发工具了。但是VS对JavaScript支持并不好,智能提示与报错机制都不是很全面,在本节不做详细讲解。,6.5.2 Aptana的使用,在上一节中,简单介绍了Aptana,本节将细致讲解Aptana的使用。Aptana有几个版本颇为流行,其中有Aptana,Aptana Studio 1.0等。Aptana这两个版本,并没有做大的改变,本书以Aptana Studio 1.0为准讲解Aptana的使用。Aptana在设计与实现方面很大程度模仿了eclipes 3.1(Java开发中最流行的编译器之一),实际上早期Aptana是以eclipes插件形式出现的。直到后期Aptana的开发团队
14、开始吸取Yahoo开发团队在Ajax开发中的一些经验,并不断征求业界关于JavaScript编译器的要求,在2007年1月初推出第1个具有实际意义的编译器,并不断发出Bata版本进行测试,并不断的更新、修正Aptana中的错误。,6.6 小结,本节细致讲解了JavaScript中错误处理,为后期复杂的Ajax开发奠定基础。错误处理是一种技巧,需要开发者不断的揣摩和实践。在本节中,还介绍了Aptana这样优秀的Ajax开发工具。工欲善其事,必先利其器,在下一章将讲解JavaScript中的XML应用,将大量使用Aptana开发,希望读者能够迅速的熟悉和掌握Aptana。XML是Ajax技术赖以生存的关键,下一章将讲解JavaScript处理XML的种种细节。,