2013-04-10 65 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