如何抛出InvalidArgumentException JavaScript?

时间:2016-07-01 12:53:48

标签: javascript exception error-handling throw

目的

在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. 我使用的是Error,而不是真正的InvalidArgumentExcpetion类型的新对象。这是正确的方法吗?
  3. 问题

    所以现在我很困惑。

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

3 个答案:

答案 0 :(得分:7)

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

问题:

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

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

  3. 数目:

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

      • Toan Nguyen,第一个答案和他的好主意
      • DavidWickström,提出了一篇文章,该文章引发了一篇文章,该文章引发了一个我正在寻找答案的博客。

      感谢所有帮助人员! kudos ++ for all!

答案 1 :(得分:4)

  

我一直在努力熟悉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的更多信息。

答案 2 :(得分:1)

请参阅以下答案:

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

    并使用它们而不是像

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