@(javascript)[JavaScript錯誤處理] [toc]javascript
做爲一個程序員,須要的不單單是技術,更是須要在遇到錯誤的時候對錯誤的處理能力。就前端而言,技術一直在更新,可是JavaScript中的錯誤也就是那麼幾個。掌握不一樣的報錯信息會讓你的實際開發事半功倍。前端
Error
是最基本的錯誤類型,其餘的錯誤類型都繼承自該類型。所以,全部錯誤的類型共享了一組相同的屬性。
這個類型的錯誤不多見。通常使用開發人員自定義拋出的錯誤。java
這個錯誤會在使用eval()
函數發生異常時候拋出。兩種狀況會出錯:程序員
eval
函數,而是new或者是從新賦值 這個錯誤基本上不會遇到,由於eval
函數原本用的就很少。不過須要注意的是,eval
是一個關鍵字。這個錯誤會在數值超出相應範圍時觸發
。好比使用new Array()
的時候傳遞一個負數或者是超過數組最大長度(4,294,967,295)的數,好比Number.MAX_VALUE,Number.MIN_VALUE。注意遞歸爆炸也有這個錯誤。數組
這個錯誤通常就是出如今變量找不到的狀況
,好比:函數
var a = b;
Uncaught ReferenceError: b is not defined
複製代碼
這時候就須要檢查一下一個變量了ui
當Javascript語言解析代碼時,Javascript引擎發現了不符合語法規範的tokens或token順序時拋出SyntaxError。spa
這個錯誤在JavaScript中是常常遇到的,無論是初學者仍是老手。在變量中保存着之外的類型時,或者在訪問不存在的方法時。都會致使這種錯誤。可是歸根結底仍是因爲在執行特定於類型的操做時,變量的類型並不符合要求所致
。好比:code
var o = new 10;
a.style.widht = "10px";
複製代碼
關於設置樣式這個東西,新手會遇到不少,通常這都是由獲取不到元素致使的。繼承
在使用encodeURI
或者decodeURI
由於URL格式不正確時,就會致使URIError錯誤。這種錯誤也不多見。
try-catch是一個錯誤處理的方法。使用法法是:
try {
// 嘗試執行的代碼
} catch(error) {
// 若是上市執行的代碼不成功則執行這段代碼
}
複製代碼
代碼中 catch
語句的error
不能省略。 在本身不能把我是否會出錯的地方使用try-catch
語句能讓代碼運行的更舒服。try-catch
語句其實還有一句finally
語句:
try {
// 嘗試執行的代碼
} catch(error) {
// 若是上市執行的代碼不成功則執行這段代碼
} finally {
// finally的語句始終都會執行
}
複製代碼
由於finally語句使用會執行,因此咱們通常都不會使用 finally
語句。
在使用try-catch
語句時發生錯誤咱們能夠執行其餘事情或者是拋出這個錯誤。拋出錯誤使用throw
操做符。
try {
alert(a)
} catch(error){
throw new Error("a is not defined")
}
複製代碼
上面的代碼就會拋出一個通常的錯誤:Uncaught Error: a is not defined
。具體拋出什麼錯誤根據實際狀況肯定。類型就是上面的那幾種錯誤類型。