2013-04-10 31 views
2

我讀有關錯誤處理的NodeJS,和我遇到一些令人不安的來到而閱讀本文件:在javascript/nodejs中拋出異常真的那麼糟糕?

http://nodejs.org/api/domain.html

它說:「通過對如何扔在JavaScript的工作的性質,幾乎從來不以任何方式安全地「拾取你離開的地方」,而不會泄漏引用,或者創建其他某種不明確的狀態。「

這聽起來非常可怕。這真的是說任何時候拋出異常,我需要關閉線程?我覺得我在這裏錯過了一些東西。

+0

如果是開發人員錯誤,則拋出。否則,通過回調或發射器傳遞它。 – 2013-04-10 04:55:57

+1

[爲什麼異常會導致Node.js中的資源泄漏?](http://stackoverflow.com/questions/15825752/why-would-an-exception-cause-resource-leaks-in-node-js ) – 2013-04-10 05:09:29

+0

確實如此,謝謝阿薩德。我該怎麼處理這個問題,因爲它是重複的? – 2013-04-10 05:30:41

回答

2

在正確的情況下拋出異常沒有任何問題。它是一個有用的工具,可以這樣使用。異常通常不是正常的,預期的,經常使用的代碼路徑的正確工具,因爲它們比正常的返回值慢,速度慢得多。如果績效對您來說很重要,那麼對這些類型的情況使用返回值通常會更好。

但是,異常可以顯着簡化您的代碼以防止意外的錯誤情況或非正常情況,並且在像JavaScript這樣的內存託管語言中,通常不必擔心引發異常時的內存泄漏,除非您在拋出異常時操縱持久全局狀態的過程中。所有局部變量及其引用在超出範圍時拋出異常時會爲您清理。

異常不會導致內存泄漏或脆弱的狀態,除非您的代碼寫得不好,這與其他指示錯誤條件的方法相同。

+0

「泄漏引用」與「泄漏內存」不同。 – 2013-04-10 05:03:15

+0

@Asad - 什麼是「泄漏引用」呢? – jfriend00 2013-04-10 05:03:52

+0

將變量引入它們不打算從中訪問的範圍,我相信。 – 2013-04-10 05:04:34