throw -> 扔出
前幾天和 Mentor 討論程式時,他使用了 throw new Error
來測試,覺得學到新的東西了,所以來記錄一下。
通常我們在捕捉錯誤時會使用try, catch
的方式,但如果使用throw new Error
是製造了一個錯誤,然後試著自己捕捉錯誤的方法。
throw new Error(‘error message’);
這是實例化寫法,是JavaScript規範所推崇的的寫法。需要注意的是 throw 拋出去的可以是單純的字串,也可以是物件,也就是說會有key 和 value。也因此如果在throw
後面加字串就不能依物件的屬性名稱來捕捉錯誤,而會單純捕捉到我們定義的字串錯誤訊息。
1 | // try, catch, finally |
執行結果
1 | 1. try 從這裡開始跑 |
假設我們有個物件,當我們要檢查這個物件是不是存在某個屬性存不存在時,就可以throw
來自定義錯誤訊息
1 | let json = '{ "age" : 42}' |
https://www.youtube.com/watch?v=cFTFtuEQ-10
使用 throw 創建一個錯誤實例
1 | // 拋出的地方 創建錯誤實例 |
所以捕獲的時候捕獲到的也是一個對象,這樣一個對象與parse excel failed字符串比較顯然是不正確的。
那麼該怎麼去捕獲這個error message呢?
通過對《JavaScript高級程序設計(第三版) 》對於拋出錯誤的學習我們可以了解到:
在拋出的Error對像中有一個被廣泛支持的屬性:name、message。
name:用來存儲錯誤的類型,在ECMA-262定義了七種錯誤類型:Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。詳情見:try-catch語句
message:用來存儲error message,就是你new Error()時候穿進去的參數
到此,上面的問題應迎刃而解。
throw new Error();
這是創建一個錯誤實例,創造一個錯誤類型拋出。throw error
是拋出錯誤。