二十二、錯誤處理
1、禁止JS錯誤(Suppress JS Errors)
Q:我是否可以禁止JavaScript錯誤資訊?
A:可以。要禁止頁面上所有的JavaScript錯誤資訊,你要把下面一段代碼放在頁面的HEAD部分:
<SCRIPT language="JavaScript"><!--function silentErrorHandler() {return true;}window.onerror=silentErrorHandler;//--></SCRIPT>
或者如何你有頁面引入的.js檔案,可以在其中使用相似代碼(不使用SCRIPT標籤)。關於可啟動並執行代碼執行個體,參考我們的錯誤處理示範程式。
2、添加你自己的錯誤處理程式(Adding Your Own Error Handler)
Q:我可以設定自己的錯誤處理程式嗎?
A:當然可以。使用下面的JavaScript代碼定義你自己的錯誤處理程式:
function handlerFunction(description,page,line) { // put error-handling operators here return true}window.onerror=handlerFunction
你的錯誤處理函數可以使用下列選擇性參數:
- 錯誤的文本描述
- 錯誤發生的頁面地址
- 錯誤發生的行號
如果你希望這個錯誤處理函數在完成自訂的錯誤處理後,再呼叫瀏覽器的預設錯誤處理,就必須返回false。如果你不想呼叫瀏覽器的預設錯誤處理機制,函數就必須返回true。程式碼範例參考錯誤處理示範程式。
3、錯誤處理示範程式(Error Handling Demo)
Q:我可以動態改變JavaScript的錯誤處理程式嗎?
A:可以。要改變JavaScript錯誤處理程式,只需要設定window.onerror的值為函數的名稱,它就會作為你的新的錯誤處理程式。
這裡是一個示範程式,你可以測試三個不同的錯誤處理程式:
- 瀏覽器預設的錯誤處理方法
- 顯示自訂警告資訊框的錯誤處理程式
- 禁止所有錯誤的資訊的“安靜”錯誤處理程式
- 使用選擇框設定或改變錯誤處理程式。
- 點擊“Fire an Error”測試活動的錯誤處理程式。
下面是示範程式中的錯誤處理程式的原始碼:
function defaultHandler() {return false}function silentHandler() {return true}function customHandler(desc,page,line,chr) { alert( 'JavaScript error occurred! /n' +'The error was handled by ' +'a customized error handler./n' +'/nError description: /t'+desc +'/nPage address: /t'+page +'/nLine number: /t'+line ) return true}
寫在最後:
該篇是JavaScript FAQ系列的最後一篇。通過這一系列的翻譯讓我以前很多不明確的問題得到瞭解決,也希望能給看到這一系列翻譯的各位帶來一些收穫。由於這一系列文章的討論大多是基於舊版的瀏覽器,可能有些問題有了新的解決方案,希望大家可以積極討論。
由於本人水平有限,在翻譯中雖然對很多句子斟酌再三,但是難免有不能表達原文之意的地方,希望大家指正。而如果各位E文比較好,可以直接點擊每個主題上的連結,直接查看原文。