JS 中的错误与异常 - JavaScript 中有异常吗?

问题描述 投票:0回答:1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error

错误

错误对象在运行时错误发生时被抛出。错误对象 也可以用作 user-defined exceptions 的基础对象。看 下面是标准的内置错误类型。

说明

运行时错误导致新的错误对象被创建和抛出.

根据 MDN,我们是否可以说 Errors 与 Exceptions 相同,因为它们都是使用

Error
类创建的,或者在 JavaScript 中是否有
Exception
类?

javascript exception error-handling runtime-error
1个回答
1
投票

JavaScript异常机制由

throw
语句组成:

throw expression;

任何值,任何值,都可以抛出。另一部分是

try catch
结构:

try {
  arbitrary code
}
catch (value) {
  handler code for thrown value
}

关于

try
catch
的事情是它处理由
try
块内任意级别的函数调用抛出的异常,就像大多数其他具有该功能的语言一样。

catch (value)
子句没有类型,因为它在(例如)Java 中。因此,与 Java 不同,单个
catch
的多个
try
块没有意义。

Error
内置构造函数是一种标准化工具,用于创建具有常用功能的对象。
Error
的几个子类也适用于不同的情况(参见 MDN 文档),尽管对于应用程序代码它们可能不是很有用;但是,它们可用。在某些运行时,
Error
实例可以访问有关创建它们的代码中的上下文的详细信息,例如源代码行号和堆栈信息。这使得

if (somethingBad) throw new Error("Something bad");

更有用。但是,该上下文信息并非在所有 JavaScript 运行时都可用。

当然,对于现代的

class
声明,如果看起来有用的话,可以将
Error
子类化。就个人而言,如果我有一个让我觉得自定义错误子类很重要的应用程序,我可能会退后一步,想知道为什么我有这么多不同的
throw
情况。抛出异常是昂贵的,并且在大多数运行时中,函数中的
try catch
结构将意味着可以进行非常少的优化,因为优化器不知道可能会发生什么。因此,对于具有类似功能的所有语言都是如此,
try catch
throw
应该通常 不应该用作基本程序逻辑的一部分。它真的应该是关于“特殊”情况,不应该发生但有时确实会发生的事情。

© www.soinside.com 2019 - 2024. All rights reserved.