Js錯誤Error物件詳解
一、概念
error
,指程式中的非正常執行狀態,在其他程式語言中稱為“異常”或“錯誤”。直譯器會為每個錯誤情形建立並丟擲一個Error
物件,其中包含錯誤的描述資訊。
ECMAScript
定義了六種型別的錯誤。除此之外,還可以使用Error構造方法建立自定義的Error
物件,並使用throw
語句丟擲該物件。
六種錯誤:
- ReferenceError:找不到物件時
- TypeError:錯誤的使用了型別或物件的方法時
- RangeError:使用內建物件的方法時,引數超範圍
- SyntaxError:語法寫錯了
- EvalError:錯誤的使用了Eval
- URIError:URI錯誤
二、錯誤處理
即使程式發生錯誤,也保證不異常中斷的機制。
try{
可能發生錯誤的程式碼
}catch(err){
只有發生錯誤時才執行的程式碼
}finally{
無論是否出錯,肯定都要執行的程式碼
}
使用要點:
- 使用try包裹的程式碼,即使不出錯,效率也比不用try包裹的程式碼低;
- 在try中,儘量少的包含可能出錯的程式碼;
- 無法提前預知錯誤型別的錯誤,必須用try catch捕獲;
- finally可以省略;
三、丟擲自定義錯誤
何時:如果函式的定義者,需要告知呼叫者使用過程中的錯誤;
如何:throw new Error("提示文字");
// 程式猿甲:定義函式的人
function round(num, d){
if(!isNaN(num) && !isNaN(d)){
num *= Math.pow(10, d);
return num;
}else{
// 丟擲自定義錯誤
throw new Error("引數必須是數字");
}
}
// 程式猿乙:呼叫函式的人
var d = parseInt(prompt('請輸入數字'));
try{
alert(round(123.456, d));
}catch(err){
alert(err.message); // 接住丟擲的自定義錯誤
}
四、例項練習
var n = 1;
function fun(){
try{
n++;
return n;
}catch(err){
// 沒錯誤,catch不執行
n++;
return n;
}finally{
n++;
return n;
}
}
console.log(fun());// 3 return為finally的
console.log(n);// 3
var n = 1;
function fun(){
try{
n++;
return n;
}catch(err){
// 沒錯誤,catch不執行
n++;
return n;
}finally{
n++;
}
}
console.log(fun()); // 2 return為try的
console.log(n); // 3
var n = 1;
function fun(){
try{
n++;
n += m; //出錯
return n;
}catch(err){
n++;
return n;
}finally{
n++;
}
}
console.log(fun()); // 3 return為catch的
console.log(n); // 4
相關文章
- 2、MySQL錯誤日誌(Error Log)詳解MySqlError
- HTTP 錯誤 500.19- Internal Server Error 錯誤解決方法HTTPServerError
- PHP curl error 60 錯誤解決PHPError
- 【JS系列】物件詳解JS物件
- 【ERROR】Oracle列印錯誤程式碼解釋ErrorOracle
- js--history 物件詳解JS物件
- JavaScript內建物件--Error型別詳解JavaScript物件Error型別
- 【Jenkins】data stream error|Error cloning remote repo ‘origin‘ 錯誤解決JenkinsErrorREM
- MySQL error 錯 誤 碼MySqlError
- PostgreSQL error 錯誤碼SQLError
- Error page: / Error infos: DedeCms錯誤警告Error
- HTTP 錯誤 500.21 - Internal Server Error 解決方案HTTPServerError
- 解決 eslint 的 Parsing error: Unexpected token 錯誤EsLintError
- 使用 createError 建立錯誤物件的詳細指南Error物件
- Error Curves——錯誤曲線Error
- mysqldump error1066 錯誤的解決辦法MySqlError
- SSL錯誤ssl connect error 35的解決方案Error
- mysql錯誤詳解(1819):ERROR 1819 (HY000): Your password does not satisfy the current policy requirementsMySqlErrorUIREM
- Angular 錯誤訊息:ERROR Error NullInjectorError No provider for XXAngularErrorNullIDE
- 錯誤解決:cc: Internal error: Killed (program cc1)Error
- 織夢提示dedecms error warning錯誤的解決方法Error
- Fatal NI connect error 12170 錯誤Error
- 15-錯誤處理(Error)Error
- dedecms 搬家 / dedecms error warning!錯誤Error
- IDEA發生“Error:java: 錯誤: 不支援發行版本 5”錯誤的解決方案IdeaErrorJava
- 執行SQL發生錯誤!錯誤:disk I/O errorSQLError
- RxJava2 錯誤處理詳解RxJava
- ORA-29702:error occurred in Cluster Group Service operation錯誤解決Error
- 通俗易懂解釋一類和二類錯誤(Type I Error Type II Error)Error
- android 打包出現錯誤Error: ResourceNameAndroidError
- js-arguments 函式引數物件詳解JS函式物件
- Python錯誤:PyCharm 安裝出錯 Internal error,please。。。PythonPyCharmError
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- ERROR L107: ADDRESS SPACE OVERFLOW keil錯誤的解決方法Error
- FreeBSD系統下zfs: failed with error 6錯誤的解決方法AIError
- 切換分支 error: Your local changes tby checkout: 錯誤解決方法Error
- Angular 依賴注入錯誤訊息:ERROR Error NullInjectorError No provider for XXAngular依賴注入ErrorNullIDE
- 派克斯常見錯誤程式碼詳解