資源描述:
《《錯誤處理》PPT課件》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、第6章錯誤處理在上一章中,對JavaScript的面向?qū)ο筇卣鬟M行了具體的講解。在面向?qū)ο蟮恼Z言中,都提供了錯誤處理這一關鍵性的語法和功能。采用了錯誤處理機制的JavaScript,能夠更好進行開發(fā)以及豐富客戶體驗。6.1錯誤和異常錯誤是指程序在運行過程中,遇到的導致不可運行的障礙。異常一般是指運行期錯誤,或者與預期結(jié)果不一致的運行結(jié)果。在高級語言中,錯誤處理至關重要,.NET和Java都內(nèi)置大量的錯誤類,以便開發(fā)者進行錯誤處理。本節(jié)就將向讀者講解JavaScript中的錯誤處理。6.1.1什么是錯誤、什么是異常JavaScript中錯誤一般有3
2、種:語法錯誤、邏輯錯誤、運行時錯誤。語法錯誤,一般是指JavaScript代碼中語法不正確,解析器無法正常解析而引發(fā)的錯誤。語法錯誤很好識別,并非常容易排除。典型的語法錯誤如下所示。document.write(hello);以上代碼,由于hello未定義和賦值,所以編譯器無法解釋,自動停止執(zhí)行這句以后的代碼。但是請注意,由于沙箱安全機制的限制,JavaScript中只有在同1個線程中的代碼會受到語法錯誤的影響。其他線程中的代碼和其他外部引用Js文件中的代碼,只要沒有錯誤代碼就可以繼續(xù)運行。通常語法錯誤很容易被發(fā)現(xiàn)及排除,所以一般性語法錯誤本章不
3、進行專門講述。6.1.2異常處理的重要性在早期的瀏覽器中,并沒有異常處理機制。一般情況下,函數(shù)通過返回1個無效的值,來提示開發(fā).者或用戶發(fā)生了異常。在上一節(jié)的異常示例中,可以改寫成這樣進行異常警告:functionWeek(){vari=0;varj=15;if(i==0){returni;}else{returnj/i;}}6.2錯誤報告錯誤報告是瀏覽器內(nèi)置的功能,當JavaScript腳本在前臺進行解釋執(zhí)行遇到錯誤,而沒有異常處理時,瀏覽器發(fā)出的錯誤提示。由于JavaScript在瀏覽器中實現(xiàn)方式不盡相同,報錯方式也五花八門。在本節(jié)中,可以對
4、錯誤報告有1個深入的了解。6.2.1在IE中使用錯誤報告IE是Windows默認瀏覽器,IE提供了兩種錯誤報告方式。當客戶安裝了腳本調(diào)試器(MicrosoftScriptDebugger),IE會采用使用消息框,通知客戶選擇是否使用調(diào)試器的方式報告錯誤。如圖所示。6.2.2FireFox中的錯誤處理FireFox中內(nèi)置了JavaScript控制臺,不僅僅記錄錯誤,還可以發(fā)出警告。訪問FireFox的JavaScript控制臺,可以在菜單欄下的錯誤控制臺中找到。如圖所示。6.3處理錯誤錯誤可以通過瀏覽器支持的錯誤報告方式得知,但是異常和錯誤還是需要
5、開發(fā)者進行一定的處理。JavaScript有兩種錯誤處理方式,BOM對象的onerror事件處理函數(shù)、try….catch…語法結(jié)構(gòu)來處理異常。本節(jié)將揭示兩種方式的優(yōu)點、缺點。6.3.1onerror事件處理程序當頁面中JavaScript代碼出現(xiàn)了錯誤,就會觸發(fā)onerror事件。典型的onerror錯誤處理代碼如下所示。雖然onerror錯誤處理可以進行錯誤處理,但是onerror錯誤處理有著先天缺陷:(1)onerror是BOM對象的一部分,非常依賴瀏覽器的實現(xiàn)。在IE中,當onerror事件觸發(fā)時,會繼續(xù)執(zhí)行onerror事件處理以后的代
6、碼。但在FireFox中,當onerror事件觸發(fā)時,所有代碼都會終止。(2)onerror僅僅能處理第1個頁面代碼中出現(xiàn)的第1個異常,而且僅僅能處理onerror事件處理函數(shù)代碼之后代碼中出現(xiàn)的錯誤。因為出現(xiàn)了多個異常,也只能觸發(fā)一次onerror事件處理程序。在JavaScript還有另一種錯誤處理的方式,請仔細閱讀6.3.2節(jié)。6.3.2trycatch語法結(jié)構(gòu)trycatch語法結(jié)構(gòu)在大多數(shù)面向?qū)ο蟮恼Z言中都得到了實現(xiàn),JavaScript也支持這個重要的異常處理功能,任何支持ECMAScript第3版的瀏覽器都支持JavaScript中
7、的trycatch語法。但是請注意JavaScript中trycatch結(jié)構(gòu)僅僅只有1個catch塊,因為JavaScript是弱類型的語言,無法得到錯誤確切類型,所以所有錯誤都由1個catch塊進行處理。try{window.noFoundFunction();}catch(exception){alert("catch語句塊");}finally{alert("finally語句塊");}6.4常用JavaScript調(diào)試技巧在上一節(jié)中,學習了基本的錯誤處理。錯誤處理是開發(fā)者豐富的客戶體驗的一種手段,但是還有很多錯誤是無法進行錯誤處理的,比如
8、說語法錯誤和瀏覽器兼容性帶來的錯誤,都是不能通過錯誤處理規(guī)避。本節(jié)將講述如何進行JavaScript調(diào)試和調(diào)試器的使用。JavaScri