一:錯誤捕獲
1.try-catch 陳述句(錯誤捕獲)
try{
//這里放置可能出現問題的代碼
}catch(error){
//錯誤發生時執行的代碼
console.log(error.name) //列印錯誤型別
console.log(error.message) //列印錯誤訊息
}
說明:如果try中的代碼出現任何錯誤,就會立即退出代碼執行程序,接著執行catch塊,執行過catch塊之后,瀏覽器默認錯誤已經處理,
2.finally 字句
try{
}catch(error){
}finally{
}
說明:無論try里面的陳述句有沒有報錯,catch里面的陳述句有沒有執行到,都會執行finally陳述句
例:
function test(){
try{
return 1
}catch(error){
return 2
}finally{
return 0
}
}
執行test函式,始侄訓回傳0 因為最終都會執行finally塊,
3.錯誤型別
Error:基型別,所有錯誤都繼承該型別
EvalError:使用eval()函式(該函式可以執行js代碼陳述句)例外時候拋出,通常是沒有直接呼叫該函式會導致該錯誤
RangeError:數值超出相應范圍觸發 例如:定義一個長度為 -20 位的陣列 var array = new Array(-20)
ReferenceError:找不到物件時觸發 例如:var obj = x 在變數x未定義的情況下 拋出錯誤
SyntaxError:傳入eval()函式的代碼出現錯誤時拋出
TypeError:最常見,執行特定型別的操作時,變數的型別不符合要求導致 例如:訪問不存在的方法、變數中保存著意外的型別
總結:什么時候試用try-catch陳述句捕獲錯誤?
通常在大型的專案中,或者使用別人的庫,源代碼不能修改 處理那些我們無法控制的錯誤,
當你明確自己的代碼在何時何地會出現什么錯誤,使用try-catch陳述句就不太合適了
二:錯誤拋出
1.throw 使用throw 運算子代碼會立即停止執行,除非使用try-catch捕獲錯誤
基本語法 throw new Error('您要自定義的錯誤資訊') throw new TypeError()...................
自定義錯誤型別
function MyError(message){
this.name = MyError
this.message = message
}
MyError.prototype = new Error() //繼承Error 因為Error是所有錯誤型別的基類
使用:throw new MyError('我自己定義的錯誤型別')
完整案例:
function test(array){
if(!(array instanceof Array)){
throw new Error('引數不是陣列')
}
array.sort();
for(var i = 0;i<array.length;i++){
if(array[i]>100){
return array[i];
}
}
return -1;
};
執行該函式需要傳遞一個陣列型別的引數
首先驗證引數是不是陣列,如果不是陣列則拋出錯誤
總結:捕獲錯誤的目的為了防止瀏覽器以默認的行為處理錯誤,拋出錯誤的目的是可以獲取詳細具體的錯誤資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/167474.html
標籤:JavaScript
上一篇:JS基礎語法---作用域
