2017-04-25 51 views
0

當創建一個將被他人使用的模塊時,是否存在一個標準化的特定錯誤類型,應該拋出來表達未滿足的要求?是否有一個特定的錯誤類型應該用來表達JavaScript中未滿足的需求?

我是一個功能。我需要x。 x是不確定的,我對此感到不安。我扔什麼?

+0

看看內置函數拋出的錯誤。 – Barmar

+1

'throw「錯誤:問題顯示很少研究,也沒有嘗試解決問題」' – Tibrogargan

+0

我實際上一直在研究它。謝謝你讓你的鼻子太高,以至於很有用。對於在SO上提出問題抱歉。 –

回答

1

與強類型C-像C#和Java這樣的風格語言,JavaScript並沒有很多開箱即用的異常類型。

try..catch也是該語言的一個小用途的功能,所以在JavaScript中明確地看到人們明確地使用throw並不是很常見。

隨着相對較新的語言承諾的引入,特別是async/awaittry..catch正變得越來越普遍。

只要什麼錯誤具體拋出,它總是取決於個人開發人員,我建議記錄你的API將拋出什麼錯誤。儘管如此,也有內置到語言,並有天然的用例共同錯誤了一把:

  • Error - 顯然,這是通用類拋出一個一般性錯誤
  • RangeError - 拋出此如果輸入不在適當的範圍內,例如您希望獲得正數並且收到負數。
  • ReferenceError - 通常這是針對不存在的變量,但這對於通過字符串顯示數據訪問的API也很有用。即:

    getData('foo') //ReferenceError: 'foo' does not exist in data` 
    
  • TypeError - 當一個值是正確類型的不是這代表了一個錯誤(這可能是你想要的)。例如,您有一個需要函數的回調參數,並且用戶提供了一個字符串。

還有更多內置Error類型不止這些,但他們往往是在野外很少見。

+0

感謝您的詳細回覆。這是我的預期,但我想確認我正在處理的事情。我相信文檔步驟是最重要的組成部分。 –

0

這真的取決於你的開發人員。你應該試着讓你的代碼優雅地死掉,儘管使用try和throwing異常。您可以使用控制檯以不同的方式記錄不同的消息,並且可以讓它說出你想要的東西。

這裏是highliting控制檯消息了良好的國土資源.. https://coderwall.com/p/m2trga/enhance-your-js-console-logging-messages

console.log('console.log'); 
console.info('console.info'); 
console.debug('console.debug'); 
console.warn('console.warn'); 
console.error('console.error'); 

缺少的參數方面,我會登錄警告...

if (typeof name === "undefined") { 
    // ... 
} 
相關問題