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
- Datastore error in 'dirbdb'錯誤解決ASTError
- 【JS系列】物件詳解JS物件
- PHP curl error 60 錯誤解決PHPError
- HTTP 錯誤 500.19- Internal Server Error 錯誤解決方法HTTPServerError
- JavaScript內建物件--Error型別詳解JavaScript物件Error型別
- js--history 物件詳解JS物件
- 【ERROR】Oracle列印錯誤程式碼解釋ErrorOracle
- 使用 createError 建立錯誤物件的詳細指南Error物件
- MySQL error 錯 誤 碼MySqlError
- PostgreSQL error 錯誤碼SQLError
- Error page: / Error infos: DedeCms錯誤警告Error
- HTTP 錯誤 500.21 - Internal Server Error 解決方案HTTPServerError
- TNS-04414 file error 錯誤解決Error
- pb錯誤程式碼詳解
- [Modules/zlibmodule.o] Error 1錯誤解決IBMError
- Error Curves——錯誤曲線Error
- ORA-04031錯誤詳解
- 標準庫~JSON物件詳解JSON物件
- JSP 9 大內建物件詳解JS物件
- 【Jenkins】data stream error|Error cloning remote repo ‘origin‘ 錯誤解決JenkinsErrorREM
- SSL錯誤ssl connect error 35的解決方案Error
- 錯誤解決:cc: Internal error: Killed (program cc1)Error
- Myeclipse 錯誤An internal error has occurred 解決辦法EclipseError
- 解決錯誤:ASP.NET Error: Failed to access IIS metabaseASP.NETErrorAI
- RxJava2 錯誤處理詳解RxJava
- C/C++常見錯誤詳解C++
- ORA-01555錯誤詳解
- 15-錯誤處理(Error)Error
- 執行SQL發生錯誤!錯誤:disk I/O errorSQLError
- IDEA發生“Error:java: 錯誤: 不支援發行版本 5”錯誤的解決方案IdeaErrorJava
- mysqldump error1066 錯誤的解決辦法MySqlError
- 解決 eslint 的 Parsing error: Unexpected token 錯誤EsLintError
- 織夢提示dedecms error warning錯誤的解決方法Error
- 通俗易懂解釋一類和二類錯誤(Type I Error Type II Error)Error
- 派克斯常見錯誤程式碼詳解
- MySQL·效能優化·SQL錯誤用法詳解MySql優化
- Nginx中502和504錯誤詳解Nginx