javascript錯(cuò)誤類型有:1、Error;2、InternalError;3、EvalError;4、RangeError;5、ReferenceError;6、SyntaxError;7、TypeError;8、URIError。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
ECMS中定義了以下八種錯(cuò)誤類型,并在錯(cuò)誤發(fā)生時(shí)拋出不同的錯(cuò)誤對(duì)象。
-
Error
-
InternalError
-
EvalError
-
RangeError
-
ReferenceError
-
SyntaxError
-
TypeError
-
URIError
一、Error
Error
是基類型,其他錯(cuò)誤類型都是繼承該類型,因此,所有錯(cuò)誤類型都是共享相同的屬性(所有錯(cuò)誤對(duì)象上的方法都是這個(gè)默認(rèn)類型定義的方法)。瀏覽器很少會(huì)拋出Error
類型的錯(cuò)誤,該類型主要用于開發(fā)者拋出自定義錯(cuò)誤。
例如攔截器/導(dǎo)航守衛(wèi)中經(jīng)常會(huì)使用到。
二、InternalError
InternalError
類型的錯(cuò)誤會(huì)在底層JavaScript
引擎拋出異常時(shí)由瀏覽器拋出。例如,遞歸過(guò)多導(dǎo)致了棧溢出。這類型并不是代碼中通常要處理的錯(cuò)誤,如果真的發(fā)生了這種錯(cuò)誤,很可能代碼哪里弄錯(cuò)了或者有危險(xiǎn)。
三、EvalError
EvalError
類型錯(cuò)誤會(huì)在使用eval()函數(shù)發(fā)生異常時(shí)拋出。ECMA-262規(guī)定,'如果eval
屬性沒(méi)有被直接調(diào)用(就是沒(méi)有將其名稱作為一個(gè)Identifier
(標(biāo)識(shí)符),也就是CallExpression
中的MemberExpression
)。
基本上,只要不把eval()
當(dāng)成函數(shù)調(diào)用就會(huì)報(bào)錯(cuò)。
不同瀏覽器拋出的錯(cuò)誤會(huì)有差異,但很少會(huì)這么使用,所以平時(shí)不常見(jiàn)
四、RangeError
RangeError
會(huì)在數(shù)值越界時(shí)拋出。例如,定義數(shù)組時(shí)如果設(shè)置了不支持的長(zhǎng)度,如-20。又或者沒(méi)有給遞歸設(shè)置停止條件時(shí)觸發(fā)。
該類型在JavaScript
發(fā)生不多
五、ReferenceError
ReferenceError
會(huì)在找不到對(duì)象時(shí)發(fā)生。(就是著名的"object expected"瀏覽器錯(cuò)誤的原因)。這種錯(cuò)誤經(jīng)常是由訪問(wèn)不存在的變量而導(dǎo)致。
例:
六、SyntaxError
經(jīng)常在給eval()傳入的字符串包含JavaScript
語(yǔ)法錯(cuò)誤時(shí)發(fā)生,在eval()外部很少會(huì)用到該類型錯(cuò)誤。這是因?yàn)镴avaScript代碼中的語(yǔ)法錯(cuò)誤會(huì)導(dǎo)致代碼無(wú)法執(zhí)行。
七、TypeError
TypeError
在JavaScript
中很常見(jiàn),主要發(fā)生變量不是預(yù)期類型,或者訪問(wèn)不存在的方法時(shí)等原因?qū)е拢绕涫窃谑褂妙愋吞囟ǖ牟僮鞫兞款愋筒粚?duì)時(shí)。
在給函數(shù)傳參前沒(méi)有驗(yàn)證的情況下,錯(cuò)誤頻繁發(fā)生
八、URIError
URIError
只會(huì)在使用encodeURL()或decodeURL()但傳入了格式錯(cuò)誤的URL時(shí)發(fā)生,但非常罕見(jiàn),因?yàn)樯厦鎯蓚€(gè)函數(shù)非常穩(wěn)健。
【推薦學(xué)習(xí):javascript高級(jí)教程】