1. 程式人生 > >javascript錯誤處理與除錯

javascript錯誤處理與除錯

    本文主要介紹javascript中一些常見的錯誤,以及一些用於除錯和處理錯誤的基礎,以幫助我們提高javascript程式碼的質量.

先說下javascript中常見的7種錯誤:

1.變數未定義

下面的語句將隱式的建立一個新的變數abc,並將值123賦給該變數:

<span style="font-size:24px;">abc = 123;</span>

嚴格的講,應該顯式的定義該變數:

<span style="font-size:24px;">var abc = 123;</span>

(實際上,是否使用var關鍵字與變數的作用域有關

,因此最好在定義變數時都加上var關鍵字)

但是,如果使用一個未定義的變數,將產生錯誤.例如,如果變數abc事先沒有顯式或隱式的定義,下面語句將產生錯誤:

<span style="font-size:24px;">alert(abc);</span>

2.大小寫敏感

大小寫錯誤是最常見的錯誤之一,但有時是很難發現的.例如,找出下面語句的三處錯誤:

<span style="font-size:24px;">var myName ="Paul";
If(myName=="paul") {
    alert(myName.toUppercase());
}<span style="font-family: 宋體; background-color: rgb(255, 255, 255);"> </span></span>

3.不匹配的大括號

4.不匹配的小括號

(上面兩個錯誤類似的,當語句過長時就會發生,當然這些也是很容易發現的.)

5.連線字串時缺少加號(+)

這種錯誤當語句短時發現很容易,但是長了就會非常麻煩,而且不同的瀏覽器報錯提醒是不一樣的.對於IE瀏覽器,提示"Error:Expected(缺少物件)",而對Firefox瀏覽器,則提示"Missing;before statement(在下列語句中缺少;)".

6.賦值而不是相等

看下面的程式碼:

var myNumber = 99;
if (myNumber=101) {
    alert("myNumber is 101");
}
else {
    alert("myNumber is"+myNumber);
}

看完上述程式碼,你是不是想else的字句中的alert()方法將會執行,並提示我們"myNumber is 99"?但事實並非如此.if語句判斷中錯誤的將兩個等號(==)寫成了一個(=),將比較運算子(==)寫成了賦值運算子(=).這是一個非常典型的錯誤.javascriptvb不同,對於vb,賦值操作和比較運算都是一個等號.這個錯誤不會產生錯誤資訊,從而非常容易被忽視.我們要記住的是,當程式的邏輯出現混亂和異常時,可以檢查下是不是這裡出了問題.

補充:

//相等和全等
alert(1 =='1');                        //true,相等對的是值,型別不用比較
alert(1 ==='1');                        //false,全等還需要比較型別
 
alert(1 ==true);                //true,1會隱式轉換為布林值,true== true
alert(1 ===true);                //false,1本身是數值,true本身是布林值

PS:在型別不相等的情況下,建議使用全等 ===

7.將方法誤認為屬性,或者將屬性誤認為方法

這裡常犯的就是在使用方法時忘記在方法名後帶一對圓括號,或者在使用屬性時,在屬性名後帶上多餘的圓括號.例如,下面的程式碼:

var nowDate = new Date;
alert(nowDate.getDay);

第一行中,使用了Date物件的建構函式,該建構函式式Date物件的一個簡單方法,但是,方法名後卻沒有一對圓括號;第二行中,呼叫了Date物件的getDay()方法,卻忘記一

對圓括號.

正確程式碼如下:

var nowDate = new Date();
alert(nowDate.getDay());

錯誤處理

1.try...catch語句

try...catch語句總是成對出現的

try-catch的意義

1.可以通過修改程式碼來排錯的,不需要使用try-catch

2.瀏覽器相容性問題,可以通過判斷瀏覽器或者判斷是否支援某個屬性或方法來判斷,不需要try-catch

比如,無法修改程式碼的情況下,可能會發生錯誤,這個時候用try-catch,網路中斷了

try {
alert(innerWidth);                        //W3C
}catch (e) {
alert(document.documentElement.clientWidth);                        //IE
}

PS:這樣的確能實現相容性問題,但邏輯上是不正確的.因為innerWidth不支援的瀏覽器,可能不一定是IE.

//丟擲錯誤,說明我們自己無法解決,就需要把錯誤報出

try {
new10;
} catch (e) {
if (einstanceof TypeError) {
thrownew TypeError('型別錯誤:例項化new的時候,可能產生了錯誤!');
} else{
//alert(e);                        //這種行為叫做處理錯誤,瀏覽器不抱錯了,因為處理掉了,遮蔽了錯誤顯示
thrownew Error('未知錯誤!');
}
}
 
new10;                        //瀏覽器自己丟擲了錯誤
 
addEvent(window, 'error',function () {
alert('程式發生錯誤了!');
});
 

指令碼偵錯程式

計算機生成了可選文字: IE:在預設情況卜,左下角會出現錯誤報告,雙擊這個圖示,可以看到錯誤訊息對話方塊。如果開啟禁止指令碼除錯,那麼出錯的時候,會彈出錯誤除錯框。設定方法為:工具一>IntemetOPtions選項一>高階一>禁用指令碼除錯,取消勾選即可。Firefox:在預設情況卜,錯誤不會通過瀏覽器給出提示。但在後臺的錯誤控制檯可以檢視。檢視方法為:工具一>[Web開發者]一>Web控制檯}錯誤控制檯。除了瀏覽器自帶的,開發人員為Firefox提供了一個強大的外掛:Firebug。它不但可以提示錯誤,還可以除錯JavascriPt和CSS、DOM、網路連結錯誤等。Safari:在預設情況下,錯誤不會通過瀏覽器給出提示。所以,我們需要開啟它。檢視方法為:顯示選單欄一>編輯一>偏好設定一>高階一>在選單欄中顯示開發一>顯示web檢查器}顯示錯誤控制器。Opera:在預設情況卜,錯誤會被隱藏起來。開啟錯誤記錄的方式為:顯示選單欄一>檢視一>開發者_!:具一>錯誤控制檯。Chrome:在預設情況卜,錯誤會被隱藏起來。開啟錯誤記錄的方法為:工具一習avascriPt控制檯。


相關推薦

javascript錯誤處理除錯

    本文主要介紹javascript中一些常見的錯誤,以及一些用於除錯和處理錯誤的基礎,以幫助我們提高javascript程式碼的質量. 先說下javascript中常見的7種錯誤: 1.變數未定義 下面的語句將隱式的建立一個新的變數abc,並將值123賦給該變數

javascript錯誤處理除錯(轉)

JavaScript 在錯誤處理除錯上一直是它的軟肋,如果指令碼出錯,給出的提示經常也讓人摸不著頭腦。 ECMAScript 第 3 版為了解決這個問題引入了 try...catch 和 throw 語句以及一些錯誤型別,讓開發人員更加適時的處理錯誤。 一.瀏覽器錯誤報告

Javascript 高階程式設計(第三版)》筆記0x1E 錯誤處理除錯

目錄 瀏覽器報告的錯誤 錯誤處理     try-catch語句         finally 子句         錯誤型別      

JavaScript】(4)——錯誤處理除錯

背景:JavaScript在錯誤處理除錯上一直是它的軟肋,如果指令碼出錯,給出的提示經常也讓人摸不著頭腦。ECMAScript第3版為了解決這個問題引入了 try...catch和 throw語句以及一些錯誤型別,讓開發人員更加適時的處理錯誤。良好的錯誤處理機制可以及時的提

17.錯誤處理除錯——JavaScript高階程式設計(筆記)

00.請讀者務必要記住,只要程式碼中包含finally子句,那麼無論try還是catch語句塊中的return語句都將被忽略。因此,在使用finally子句之前,一定要非常清楚你想讓程式碼怎樣。 01.錯誤型別(Error EvalError RangeError ReferenceError Synatx

關於JavaScript的學習(十七)——錯誤處理除錯

第十七章   錯誤處理對於今天覆雜的Web應用程式開發而言至關重要。不能提前預測到可能發生的錯誤,不能提前採取回覆策略,可能導致較差的使用者體驗,最終引發使用者不滿。多數瀏覽器在預設情況下都不會向用戶報告錯誤,因此在開發和除錯期間需要啟動瀏覽器的錯誤報告功

JavaScript筆記:錯誤處理除錯

1、瀏覽器報告的錯誤 IE IE 是唯一一個在瀏覽器的介面窗體(chrome)中顯示 JavaScript 錯誤資訊的瀏覽器。在發生 JavaScript 錯誤時,瀏覽器左下角會出現一個黃色的圖示,圖示旁邊則顯示著”Error on page”(頁面中有錯誤

JavaScriptFireFox的不解之緣——錯誤處理除錯

       作為IT界的一員出現Bug真是在正常不過。在學習JavaScript的時候難免自己因為各種原因而導致出錯,知道錯誤是什麼之後才能快準狠的修改之。在學習過程中都習慣使用火狐瀏覽器進行檢視效

JS錯誤處理除錯

try{ window.someNonexistentFunction(); }catch(error){ console.log(error.message); } 錯誤物件的message屬性。 自己在做了一個例子。 try{ (function(){

ASP.NET MVC編程——錯誤處理日記

CP 引用 args context mvc4 strong gpo pub family ASP.NET MVC的錯誤處理應考慮到這幾個方面:模型綁定期間發生的錯誤,未能路由到指定操作,針對控制器的錯誤處理。使用配置文件可以幫助我們處理異常,但是不夠靈活和全面;使用Han

Python中的錯誤處理除錯方法簡介

方法一: 最方便的方法是在互動執行時將可能存在錯誤的變數直接打印出來,通過檢視列印資訊來調整程式; 方法二:try機制 try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivisionE

JavaScript錯誤處理權威指南

本文將分三部分分析 JavaScript 中的錯誤,首先我們將瞭解錯誤的一般情況,之後,我們將關注後端(Node.js + Express.js),最後,我們將重點看下如何處理 React.js 中的錯誤。選擇這些框架,是因為它們是目前最流行的,但是,你應該也能夠將這些新發現應用到其他框架中吧

javascript錯誤處理方式有哪些

 今天給大家分享的這篇javascript教程不是很適合初學者觀看,對此不熟悉的朋友建議先看看基礎的知識點。本文主要講述java中的出錯處理,也會涉及到javascript異常處理使用的正反列,以及ajax的非同步處理。   Java的事件驅動機制讓Java更加豐富,瀏覽器

【WIN32之旅】WINDOWS錯誤處理參考(四)

    上一篇,我們說到了GetLastError()函式,可是它返回的是一個DWORD(雙字型)的錯誤程式碼,如果我們並不清楚FormatMessage()函式或者就只想快速簡單地得到錯誤

python-異常處理除錯

一、常見的異常 出現錯誤的原因: •有的錯誤是程式編寫有問題造成的,比如本來應該輸出整數結果輸出了字串,這種錯誤我們通常稱之為 bug,bug 是必須修復的。 •有的錯誤是使用者輸入造成的,比如讓使用者輸入 email 地址,結果得到一個空字串,這種錯誤可

python異常處理除錯,正則表示式

####異常處理與除錯#### 1.cacl包裡沒加if __name__ == "__main__":時,hell.py在呼叫mun中的方法時,會執行mun中的print,加了之後則沒有。 2.錯誤 •有的錯誤是程式編寫有問題造成的,比如本來應該輸出整數結果輸出了字元

JavaScript錯誤處理

JavaScript對錯誤的處理方式,下邊是不錯的處理方式: <html> <head> <mce:script type="text/javascript"><!-- onerror=handleErr; var txt="";

Javascript錯誤處理——try...catch

Javascript錯誤處理——try…catch 無論我們程式設計多麼精通,指令碼錯誤怎是難免。可能是我們的錯誤造成,或異常輸入,錯誤的伺服器端響應以及無數個其他原因。 通常,當傳送錯誤時指令碼會立刻停止,列印至控制檯。 但try.

異常處理除錯

錯誤 •   有的錯誤是程式編寫有問題造成的,比如本來應該輸出整數結果輸出了字元 串,這種錯誤我們通常稱之為 bug,bug 是必須修復的。  •   有的錯誤是使用者輸入造成的,比如讓使用者輸入 email 地址,結果得到一個空字 符串,這種錯誤可以通過檢查使用者輸入來做

使用 Chrome 開發者工具進行 JavaScript 問題定位除錯

引言 Google Chrome 是由 Goole 公司開發的一款網頁瀏覽器,自 2008 年 9 月第一個測試版本釋出以來,其市場佔有率逐步上升,至 2014 年 5 月,Chrome 已超越 Firefox 成為全球市場佔有率第二的瀏覽器。Chrome 的受歡迎程度與其優秀的效能與相容性密不可分,並