如何抛出 InvalidArgumentException JavaScript?

How to throw InvalidArgumentException JavaScript?

Objective

在 Java 脚本方法中抛出 InvalidArgumentException,就像在 Java 或类似语言中一样。

背景

我一直在尝试熟悉 JavaSctipt 错误处理,我知道我可以使用 throw 关键字抛出异常。

为了实现这一点,我也阅读了 throw documentation on MDN and the Error documentation on MDN

问题

到目前为止,这是我的代码:

if (mySize >= myArray.length)
    throw new Error("InvalidArgumentExcpetion - BANG!!!!");

这段代码对我来说有一些问题:

  1. 我在异常本身中有文本。现在我有 BANG,但明天我可能想要 BONG,如果我决定改变它,我必须到处寻找!
  2. 我使用的是错误,而不是类型为 InvalidArgumentExcpetion 的新对象。这是正确的方法吗?

问题

所以现在我很困惑。

  1. 我应该像 throw 文档中那样创建一个新对象,还是创建一个错误消息?
  2. Java脚本没有我可以使用的 InvalidArgumentException 对象吗?
  3. 我应该如何进行才能以可维护的方式抛出使用 ECMA6 的错误

请看下面的答案:

  1. 如果您想像 Java 中那样根据异常类型处理异常,您应该像文档中那样创建一个新对象。
  2. 如果您不想到处查找消息,请像在 Java 中那样创建一个新的错误列表。例如:
let errors = {
    invalidOperation: 'Invalid operation',
    unAuthorized: 'You are not authorized to use this function',       
}

并使用它们代替

这样的硬编码字符串
throw new InvalidOperationException(errors.invalidOperation);
  1. Java脚本没有InvalidArgumentException

经过研究,我现在找到了一个我喜欢的解决方案。特别感谢 Toan,我很乐意选择他的答案,但由于我确实觉得它仍然有点不完整,所以我决定根据自己的发现创建自己的答案。希望对大家有帮助!

问题:

  1. 使用Toan提出的方案:

  2. 这是可能的,但如果您想要自定义,您确实需要创建自己的对象。

答案:

  1. 如果您想像 Java 中那样根据异常类型处理异常,您应该像文档中那样创建一个新对象。 (作者 Toan Nguyen
  2. Java脚本没有 InvalidArgumentException(来自 Toan Nguyen
  3. 经过重新搜索,我找到了这个解决方案:

学分:

  • Toan Nguyen,第一个答案和他的好主意
  • David Wickström,感谢他推荐了一篇文章,这篇文章又引出了我正在寻找答案的博客。

感谢大家的帮助!所有人的荣誉++!

I have been trying to familiarize myself with JavaSctipt [sic] error handling, and I know I can throw exceptions [....] but tomorrow I may want BONG [....]

您可以抛出一个 TypeError or a SyntaxError if they make more sense. But no need to get too fancy. Simply throw an Error 消息,因为它看起来就像您已经在做的那样:

if (myArray && myArray.length < mySize) throw new Error('`mySize` must be larger');

如果你决定明天要 BONG:

if (!myBong) throw new Error('Officer, that is not `myBong`');

有关内置错误类型的详细信息read the docs