我正在阅读有关nodejs中的错误处理的内容,我在阅读本文档时遇到了一些令人不安的事情:
http://nodejs.org/api/domain.html
它说“由于如何在JavaScript中使用throw的本质,几乎从来没有任何方法可以安全地”拾取你离开的地方“,不会泄漏引用,或创建其他类型的未定义的脆弱状态。”< / p>
这听起来非常可怕。这是否真的说任何时候抛出异常,我需要关闭线程?我觉得我在这里错过了一些东西。
答案 0 :(得分:2)
在适当的情况下抛出异常并没有错。它是一个有用的工具,可以这样使用。对于正常的,预期的,经常使用的代码路径,异常通常不是正确的工具,因为它们很慢,比正常返回值慢得多。如果性能对您很重要,通常最好在这些类型的情况下使用返回值。
但是,异常可以显着简化您的代码以应对意外错误情况或非正常情况,并且在内存管理语言(如javascript)中,除非您处于异常状态,否则在抛出异常时通常不必担心内存泄漏抛出异常时操纵持久全局状态的中间点。当超出范围时抛出异常时,将清除所有局部变量及其引用。
异常不会导致内存泄漏或脆弱状态,除非您的代码写得不好,这与任何其他指示错误情况的方法相同。