在javascript/nodejs中抛出异常真的那么糟糕吗?

在javascript/nodejs中抛出异常真的那么糟糕吗?,javascript,node.js,exception,exception-handling,Javascript,Node.js,Exception,Exception Handling,我正在阅读nodejs中的错误处理,在阅读本文档时,我遇到了一些令人不安的事情: 它说“从JavaScript中throw的工作原理来看,几乎没有任何方法可以安全地“从您中断的地方开始”,而不泄漏引用或创建其他未定义的脆弱状态。” 这听起来可怕极了。这是否真的意味着每当抛出异常时,我都需要关闭线程?我觉得我在这里遗漏了什么。在正确的情况下抛出异常没有什么错。这是一个有用的工具,可以这样使用。对于正常的、预期的、经常使用的代码路径,异常通常不是合适的工具,因为它们速度慢,比正常的返回值慢得多。如

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

它说“从JavaScript中throw的工作原理来看,几乎没有任何方法可以安全地“从您中断的地方开始”,而不泄漏引用或创建其他未定义的脆弱状态。”


这听起来可怕极了。这是否真的意味着每当抛出异常时,我都需要关闭线程?我觉得我在这里遗漏了什么。

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

但是,异常可以显著地简化代码,用于意外的错误条件或非正常条件,并且在像JavaScript这样的内存管理语言中,当抛出异常时,一般不必担心内存泄漏,除非抛出异常时,您正处于操作持久全局状态的中间。当局部变量及其引用超出范围时引发异常时,将为您清理所有局部变量及其引用


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

如果是开发人员错误,则抛出。否则,将其通过回调或发射器传递。可能是它的副本,谢谢Asad。既然这个问题是重复的,我该怎么办?请注意,我在这一页的回答涵盖了我目前对这个问题答案的理解:“泄漏引用”与“泄漏内存”不一样@Asad-那么什么是“泄漏引用”?将变量带入一个不打算从中访问的范围,我相信。@Asad-当您抛出异常时,不会发生类似的情况。Javascript的作用域是严格限定的。抛出异常不会改变任何变量的作用域可用性。我不同意“最好使用返回值”的说法。那是一些过时的想法。