2

我正在阅读有关 nodejs 中的错误处理的内容,并且在阅读本文档时遇到了一些令人不安的事情:

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

它说“由于 throw 在 JavaScript 中的工作原理,几乎没有任何方法可以安全地“从你离开的地方继续”,而不会泄漏引用或创建其他类型的未定义的脆弱状态。

这听起来非常可怕。这真的是说任何时候抛出异常,我都需要关闭线程吗?我觉得我在这里遗漏了一些东西。

4

1 回答 1

3

在正确的情况下抛出异常并没有错。这是一个有用的工具,可以这样使用。异常通常不是正常的、预期的、经常使用的代码路径的正确工具,因为它们很慢,比正常的返回值慢得多。如果性能对您很重要,通常最好在这些类型的情况下使用返回值。

但是,异常可以显着简化您的代码以应对意外错误情况或非正常情况,并且在像 javascript 这样的内存管理语言中,您通常不必担心抛出异常时的内存泄漏,除非您处于中间状态抛出异常时操纵持久的全局状态。当超出范围时引发异常时,所有局部变量及其引用都会为您清理。

除非您的代码写得不好,否则异常不会导致内存泄漏或脆弱状态,这对于指示错误条件的任何其他方法都是相同的。

于 2013-04-10T04:59:58.537 回答