錯(cuò)誤處理最新PPT課件_第1頁(yè)
錯(cuò)誤處理最新PPT課件_第2頁(yè)
錯(cuò)誤處理最新PPT課件_第3頁(yè)
錯(cuò)誤處理最新PPT課件_第4頁(yè)
錯(cuò)誤處理最新PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、錯(cuò)誤處理最新第6章 錯(cuò)誤處理 在上一章中,對(duì)JavaScript的面向?qū)ο筇卣鬟M(jìn)行了具體的講解。在面向?qū)ο蟮恼Z(yǔ)言中,都提供了錯(cuò)誤處理這一關(guān)鍵性的語(yǔ)法和功能。采用了錯(cuò)誤處理機(jī)制的JavaScript,能夠更好進(jìn)行開發(fā)以及豐富客戶體驗(yàn)。錯(cuò)誤處理最新6.1 錯(cuò)誤和異常 錯(cuò)誤是指程序在運(yùn)行過(guò)程中,遇到的導(dǎo)致不可運(yùn)行的障礙。異常一般是指運(yùn)行期錯(cuò)誤,或者與預(yù)期結(jié)果不一致的運(yùn)行結(jié)果。在高級(jí)語(yǔ)言中,錯(cuò)誤處理至關(guān)重要,.NET和Java都內(nèi)置大量的錯(cuò)誤類,以便開發(fā)者進(jìn)行錯(cuò)誤處理。本節(jié)就將向讀者講解JavaScript中的錯(cuò)誤處理。錯(cuò)誤處理最新6.1.1 什么是錯(cuò)誤、什么是異常JavaScript中錯(cuò)誤一般有3種

2、:語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤。語(yǔ)法錯(cuò)誤,一般是指JavaScript代碼中語(yǔ)法不正確,解析器無(wú)法正常解析而引發(fā)的錯(cuò)誤。語(yǔ)法錯(cuò)誤很好識(shí)別,并非常容易排除。典型的語(yǔ)法錯(cuò)誤如下所示。document.write(hello); 以上代碼,由于hello未定義和賦值,所以編譯器無(wú)法解釋,自動(dòng)停止執(zhí)行這句以后的代碼。但是請(qǐng)注意,由于沙箱安全機(jī)制的限制,JavaScript中只有在同1個(gè)線程中的代碼會(huì)受到語(yǔ)法錯(cuò)誤的影響。其他線程中的代碼和其他外部引用Js文件中的代碼,只要沒(méi)有錯(cuò)誤代碼就可以繼續(xù)運(yùn)行。通常語(yǔ)法錯(cuò)誤很容易被發(fā)現(xiàn)及排除,所以一般性語(yǔ)法錯(cuò)誤本章不進(jìn)行專門講述。 錯(cuò)誤處理最新6.1.2 異常處理

3、的重要性在早期的瀏覽器中,并沒(méi)有異常處理機(jī)制。一般情況下,函數(shù)通過(guò)返回1個(gè)無(wú)效的值,來(lái)提示開發(fā).者或用戶發(fā)生了異常。在上一節(jié)的異常示例中,可以改寫成這樣進(jìn)行異常警告:function Week()var i=0;var j=15;if(i=0)return i;elsereturn j/i; 錯(cuò)誤處理最新6.2 錯(cuò)誤報(bào)告 錯(cuò)誤報(bào)告是瀏覽器內(nèi)置的功能,當(dāng)JavaScript腳本在前臺(tái)進(jìn)行解釋執(zhí)行遇到錯(cuò)誤,而沒(méi)有異常處理時(shí),瀏覽器發(fā)出的錯(cuò)誤提示。由于JavaScript在瀏覽器中實(shí)現(xiàn)方式不盡相同,報(bào)錯(cuò)方式也五花八門。在本節(jié)中,可以對(duì)錯(cuò)誤報(bào)告有1個(gè)深入的了解。錯(cuò)誤處理最新6.2.1 在IE中使用錯(cuò)誤

4、報(bào)告 IE是Windows默認(rèn)瀏覽器,IE提供了兩種錯(cuò)誤報(bào)告方式。當(dāng)客戶安裝了腳本調(diào)試器(Microsoft Script Debugger),IE會(huì)采用使用消息框,通知客戶選擇是否使用調(diào)試器的方式報(bào)告錯(cuò)誤。如圖所示。錯(cuò)誤處理最新6.2.2 FireFox中的錯(cuò)誤處理FireFox中內(nèi)置了JavaScript控制臺(tái),不僅僅記錄錯(cuò)誤,還可以發(fā)出警告。訪問(wèn)FireFox的JavaScript控制臺(tái),可以在菜單欄下的錯(cuò)誤控制臺(tái)中找到。如圖所示。錯(cuò)誤處理最新6.3 處理錯(cuò)誤 錯(cuò)誤可以通過(guò)瀏覽器支持的錯(cuò)誤報(bào)告方式得知,但是異常和錯(cuò)誤還是需要開發(fā)者進(jìn)行一定的處理。JavaScript有兩種錯(cuò)誤處理方式,B

5、OM對(duì)象的onerror事件處理函數(shù)、try.catch語(yǔ)法結(jié)構(gòu)來(lái)處理異常。本節(jié)將揭示兩種方式的優(yōu)點(diǎn)、缺點(diǎn)。錯(cuò)誤處理最新6.3.1 onerror事件處理程序當(dāng)頁(yè)面中JavaScript代碼出現(xiàn)了錯(cuò)誤,就會(huì)觸發(fā)onerror事件。典型的onerror錯(cuò)誤處理代碼如下所示。雖然onerror錯(cuò)誤處理可以進(jìn)行錯(cuò)誤處理,但是onerror錯(cuò)誤處理有著先天缺陷:(1)onerror是BOM對(duì)象的一部分,非常依賴瀏覽器的實(shí)現(xiàn)。在IE中,當(dāng)onerror事件觸發(fā)時(shí),會(huì)繼續(xù)執(zhí)行onerror事件處理以后的代碼。但在FireFox中,當(dāng)onerror事件觸發(fā)時(shí),所有代碼都會(huì)終止。(2)onerror僅僅能處理

6、第1個(gè)頁(yè)面代碼中出現(xiàn)的第1個(gè)異常,而且僅僅能處理onerror事件處理函數(shù)代碼之后代碼中出現(xiàn)的錯(cuò)誤。因?yàn)槌霈F(xiàn)了多個(gè)異常,也只能觸發(fā)一次onerror事件處理程序。在JavaScript還有另一種錯(cuò)誤處理的方式,請(qǐng)仔細(xì)閱讀6.3.2節(jié)。錯(cuò)誤處理最新6.3.2 try catch 語(yǔ)法結(jié)構(gòu)try catch 語(yǔ)法結(jié)構(gòu)在大多數(shù)面向?qū)ο蟮恼Z(yǔ)言中都得到了實(shí)現(xiàn),JavaScript也支持這個(gè)重要的異常處理功能,任何支持ECMAScript第3版的瀏覽器都支持JavaScript中的try catch 語(yǔ)法。但是請(qǐng)注意JavaScript中try catch 結(jié)構(gòu)僅僅只有1個(gè)catch塊,因?yàn)镴avaScr

7、ipt是弱類型的語(yǔ)言,無(wú)法得到錯(cuò)誤確切類型,所以所有錯(cuò)誤都由1個(gè)catch塊進(jìn)行處理。trywindow.noFoundFunction();catch(exception)alert(catch 語(yǔ)句塊);finallyalert(finally 語(yǔ)句塊); 錯(cuò)誤處理最新6.4 常用JavaScript調(diào)試技巧 在上一節(jié)中,學(xué)習(xí)了基本的錯(cuò)誤處理。錯(cuò)誤處理是開發(fā)者豐富的客戶體驗(yàn)的一種手段,但是還有很多錯(cuò)誤是無(wú)法進(jìn)行錯(cuò)誤處理的,比如說(shuō)語(yǔ)法錯(cuò)誤和瀏覽器兼容性帶來(lái)的錯(cuò)誤,都是不能通過(guò)錯(cuò)誤處理規(guī)避。本節(jié)將講述如何進(jìn)行JavaScript調(diào)試和調(diào)試器的使用。 JavaScript一直沒(méi)有一款良好的開發(fā)工

8、具,給JavaScript的發(fā)展帶來(lái)了很大的阻礙,但是并沒(méi)有阻止聰明的開發(fā)者的腳步。6.4.1節(jié)將介紹一種歷史最悠久,最笨拙的JavaScript調(diào)試方法。錯(cuò)誤處理最新6.4.1 使用alert()進(jìn)行調(diào)試 使用alert()調(diào)試是JavaScript開發(fā)者使用的最早和最頻繁的調(diào)試方式,也是最土的一種(筆者曾經(jīng)一直認(rèn)為JavaScript調(diào)試技術(shù)是JavaScript設(shè)計(jì)者設(shè)計(jì)的1個(gè)最大敗筆)。 使用alert()調(diào)試大量JavaScript代碼時(shí),應(yīng)遵循以下守則: (1)對(duì)所有函數(shù)或代碼分段都添加alert(),并根據(jù)調(diào)用先后順序?qū)λ刑砑拥腶lert()進(jìn)行排序。 (2)當(dāng)確定錯(cuò)誤位置以后

9、,就可以使用alert()彈出對(duì)話框來(lái)檢查變量的值。但是請(qǐng)注意,盡量避免將alert()放入循環(huán)中。因?yàn)槿绻龅剿姥h(huán),關(guān)掉瀏覽器都很困難。 錯(cuò)誤處理最新6.4.2 拋出自定義錯(cuò)誤前面學(xué)習(xí)了throw關(guān)鍵字,實(shí)際上使用throw關(guān)鍵字可以很方便的調(diào)試JavaScript代碼。拋出自定義錯(cuò)誤,可以準(zhǔn)確的得知錯(cuò)誤出現(xiàn)的位置和規(guī)避某些錯(cuò)誤。以下的代碼演示了如何拋出自定義錯(cuò)誤:function createError(message)if(typeof(message)=undefined)throw new Error(傳入的對(duì)象未定義);elsealert(message); 錯(cuò)誤處理最新6.4.

10、3 常見的JavaScript調(diào)試器對(duì)于.NET程序員而言,IE一定是使用最多的瀏覽器了。Microsoft提供了在IE中使用的JavaScript調(diào)試器即Microsoft Script Debugger。Microsoft Script Debugger是第一種應(yīng)用于IE中的腳本調(diào)試工具,Microsoft Script Debugger有兩個(gè)版本的安裝文件:scd10chs.exe、dbg10chs.exe。scd10chs.exe支持Windows NT4.0以上的版本即Windows XP或Windows 2003,dbg10chs.exe支持Windows 2000或Windows

11、 98等低版本的操作系統(tǒng)。實(shí)際上Microsoft Script Debugger第一次出現(xiàn)在Microsoft Visual Studio 6.0中,最早實(shí)際上是為了ASP調(diào)試工具出現(xiàn)的。在后期微軟擴(kuò)展了Microsoft Script Debugger的功能,開始支持Jscript的調(diào)試以及JavaScript的調(diào)試。錯(cuò)誤處理最新6.5 常見的JavaScript編寫工具 在上一節(jié)中,講解了拋出錯(cuò)誤和Microsoft Script Debugger,但是還是不能根本解決在JavaScript日常編寫時(shí)出現(xiàn)的一些錯(cuò)誤,本節(jié)將講解JavaScript常見編譯器,來(lái)解決編寫時(shí)的錯(cuò)誤排除和提高J

12、avaScript編寫的效率問(wèn)題。 本節(jié)將講解兩種比較優(yōu)秀的JavaScript編譯器,主要推薦Aptana,筆者也一直在使用Aptana編寫JavaScript。錯(cuò)誤處理最新6.5.1 常見的JavaScript編寫工具在JavaScript開發(fā)中,由于一直缺乏一款較為優(yōu)秀的JavaScript編寫工具,導(dǎo)致JavaScript一直在后臺(tái)開發(fā)者中普及很慢。大多數(shù)程序員還停留在使用記事本,或者代碼變色功能記事本開發(fā)JavaScript的階段。雖然這樣也可以開發(fā)Ajax應(yīng)用,但是在今天Ajax開發(fā)中,大量的Js腳本庫(kù)的流行的年代,使用記事本一類的工具無(wú)疑是一種愚蠢的行為。筆者一直認(rèn)為工欲善其事,

13、必先利其器,使用Dramwaver和Front Page以及記事本已經(jīng)不能適應(yīng)這個(gè)時(shí)代。對(duì)于大多數(shù).NET程序員,Visual Studio .NET(以下簡(jiǎn)稱VS)系列是使用最頻繁、最擅長(zhǎng)的開發(fā)工具了。但是VS對(duì)JavaScript支持并不好,智能提示與報(bào)錯(cuò)機(jī)制都不是很全面,在本節(jié)不做詳細(xì)講解。錯(cuò)誤處理最新6.5.2 Aptana的使用在上一節(jié)中,簡(jiǎn)單介紹了Aptana,本節(jié)將細(xì)致講解Aptana的使用。Aptana有幾個(gè)版本頗為流行,其中有Aptana 3425,Aptana Studio 1.0等。Aptana這兩個(gè)版本,并沒(méi)有做大的改變,本書以Aptana Studio 1.0為準(zhǔn)講解Aptana的使用。Aptana在設(shè)計(jì)與實(shí)現(xiàn)方面很大程度模仿了eclipes 3.1(Java開發(fā)中最流行的編譯器之一),實(shí)際上早期Aptana是以eclipes插件形式出現(xiàn)的。直到后期Aptana的開發(fā)團(tuán)隊(duì)開始吸取Yahoo開發(fā)團(tuán)隊(duì)在Ajax開發(fā)中的一些經(jīng)驗(yàn),并不斷征求業(yè)界關(guān)于JavaScript編譯器的要求,在2007年1月初推出第1個(gè)具有實(shí)際意義的編譯器,并不斷發(fā)出Bata版本進(jìn)行測(cè)試,并不斷的更新、修正Aptana中的錯(cuò)誤。錯(cuò)誤處理最新6.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論