【问题标题】:How to throw InvalidArgumentException JavaScript?如何抛出 InvalidArgumentException JavaScript?
【发布时间】:2016-11-03 21:34:51
【问题描述】:

目标

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

背景

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

为了实现这一点,我还阅读了throw documentation on MDNError documentation on MDN

问题

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

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

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

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

问题

所以现在我很困惑。

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

【问题讨论】:

标签: javascript exception error-handling throw


【解决方案1】:

请看下面的答案:

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

并使用它们而不是像

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

【讨论】:

  • 所以,你是说我必须创建自己的对象,对吧?
  • 是的,如果您有基于异常类型的逻辑处理异常,则可以这样做。如果您只有一个简单的 try/catch {},然后处理消息,那么您可以使用通用错误类型。
  • InvalidOperationException JavaScript 拥有的东西,还是你创建的?我在Error 文档中找不到对它的任何引用。
  • 我创建了 InvalidOperationException。 Javascript没有这样的错误。
【解决方案2】:

我一直在尝试熟悉 JavaSctipt [sic] 错误处理,我知道我可以抛出异常 [....] 但明天我可能想要 BONG [....]

如果它们更有意义,您可以抛出 TypeErrorSyntaxError。但没必要太花哨。只需抛出一个带有消息的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

【讨论】:

    【解决方案3】:

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

    问题:

    1. 使用Toan提出的解决方案:https://stackoverflow.com/a/38146237/1337392

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

    答案:

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

    学分:

    • Toan Nguyen,对于第一个答案和他的伟大想法
    • David Wickström,感谢您推荐一篇文章,该文章引出了一篇文章,该文章引出了我正在寻找的答案的博客。

    感谢大家的帮助!为所有人点赞++!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 2013-11-24
      • 2013-05-22
      相关资源
      最近更新 更多