如何抛出InvalidArgumentException JavaScript?

Fla*_*nix 5 javascript error-handling exception throw

目的

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

背景

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

为此,我还阅读了MDN上throw文档和MDN上Error文档.

问题

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

if (mySize >= myArray.length)
    throw new Error("InvalidArgumentExcpetion - BANG!!!!");
Run Code Online (Sandbox Code Playgroud)

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

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

问题

所以现在我很困惑.

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

Fla*_*nix 7

经过研究,我现在已经找到了我喜欢的解决方案.对Toan的特别赞誉,我很乐意选择他的答案,但既然我觉得它仍然有点不完整,我决定用我自己的发现创建我自己的答案.希望它可以帮到某人!

问题:

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

  2. 这是可能的,虽然如果你想要自定义,你需要创建自己的对象.

回答:

  1. 如果要根据Java中的类型处理异常,则应该在文档中创建一个新对象.(由Toan Nguyen提供)
  2. Javascript没有InvalidArgumentException(由Toan Nguyen提供)
  3. 重新研究后,我发现了这个解决方案:https://stackoverflow.com/a/32750746/1337392

积分:

  • Toan Nguyen,第一个答案和他的好主意
  • 大卫·威克斯特罗姆(DavidWickström)提出了一篇文章,该文章引发了一篇文章,该文章引发了一个我正在寻找答案的博客.

谢谢你所有的帮助!kudos ++为所有人!


Toa*_*yen 5

请看下面的回答:

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

并使用它们代替硬编码的字符串,如

throw new InvalidOperationException(errors.invalidOperation);
Run Code Online (Sandbox Code Playgroud)
  1. Javascript 没有InvalidArgumentException


Jos*_*das 5

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

如果它们更有意义,则可以抛出一个TypeError或一个SyntaxError。但不必太花哨。只需抛出一条Error带有看起来好像已经在做的消息:

if (myArray && myArray.length < mySize) throw new Error('`mySize` must be larger');
Run Code Online (Sandbox Code Playgroud)

如果您明天决定要BONG:

if (!myBong) throw new Error('Officer, that is not `myBong`');
Run Code Online (Sandbox Code Playgroud)

有关内置错误类型的更多信息,请阅读docs