javascript 中是否应该使用特定的错误类型来表达未满足的要求?

Is there a specific error type that should be used to express an unmet requirement in javascript?

在创建供其他人使用的模块时,是否应该抛出标准化的特定错误类型来表示未满足的要求?

我是函数。我需要 x。 x 是未定义的,我对此很不高兴。我扔什么?

作为 MDN 示例,您可以定义一个新的异常 class 然后抛出它

这里是例子。希望有所帮助:)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw#Throw_an_object

这完全取决于您作为开发者。你应该尝试通过使用 try 和抛出异常来让你的代码优雅地结束。您可以使用控制台以不同的方式记录不同的消息,并且可以让它说出您想要的任何内容。

这里是突出显示控制台消息的好资源.. https://coderwall.com/p/m2trga/enhance-your-js-console-logging-messages

console.log('console.log');
console.info('console.info');
console.debug('console.debug');
console.warn('console.warn');
console.error('console.error');

就缺少参数而言,我会在...上记录警告

if (typeof name === "undefined") {
    // ...
}

与 C# 和 Java 等强类型 C 风格语言不同,JavaScript 没有很多现成的异常类型。

try..catch 也是该语言的一个很少使用的特性,因此在 JavaScript.

中明确地看到人们 throw 并不太常见。

随着相对较新的语言引入 promises,并且——特别是——async/await try..catch 变得越来越普遍。

至于要具体抛出 什么 错误,这始终取决于各个开发人员,我建议记录您的 API 会抛出哪些错误。也就是说,语言中内置了一些 常见 错误并具有自然用例:

  • Error - 显然这是通用的 class 抛出通用错误
  • RangeError - 如果输入不在适当的范围内,例如当你期望一个正数而收到一个负数时抛出这个。
  • ReferenceError - 通常这意味着不存在的变量,但这对于通过字符串公开数据访问的 APIs 也很有用。即:

    getData('foo') //ReferenceError: 'foo' does not exist in data`
    
  • TypeError - 当值类型不正确(这可能是您想要的)时,这表示错误。比如你有一个回调参数,需要一个函数,用户提供一个字符串。

内置的 Error 类型比这些更多,但它们在野外往往不太常见。