如何抛出 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!!!!");
这段代码对我来说有一些问题:
- 我在异常本身中有文本。现在我有 BANG,但明天我可能想要 BONG,如果我决定改变它,我必须到处寻找!
- 我使用的是错误,而不是类型为 InvalidArgumentExcpetion 的新对象。这是正确的方法吗?
问题
所以现在我很困惑。
- 我应该像 throw 文档中那样创建一个新对象,还是创建一个错误消息?
- Java脚本没有我可以使用的 InvalidArgumentException 对象吗?
- 我应该如何进行才能以可维护的方式抛出使用 ECMA6 的错误 ?
请看下面的答案:
- 如果您想像 Java 中那样根据异常类型处理异常,您应该像文档中那样创建一个新对象。
- 如果您不想到处查找消息,请像在 Java 中那样创建一个新的错误列表。例如:
let errors = {
invalidOperation: 'Invalid operation',
unAuthorized: 'You are not authorized to use this function',
}
并使用它们代替
这样的硬编码字符串
throw new InvalidOperationException(errors.invalidOperation);
- Java脚本没有InvalidArgumentException
经过研究,我现在找到了一个我喜欢的解决方案。特别感谢 Toan,我很乐意选择他的答案,但由于我确实觉得它仍然有点不完整,所以我决定根据自己的发现创建自己的答案。希望对大家有帮助!
问题:
使用Toan提出的方案:
这是可能的,但如果您想要自定义,您确实需要创建自己的对象。
答案:
- 如果您想像 Java 中那样根据异常类型处理异常,您应该像文档中那样创建一个新对象。 (作者 Toan Nguyen)
- Java脚本没有 InvalidArgumentException(来自 Toan Nguyen)
- 经过重新搜索,我找到了这个解决方案:
学分:
- 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。
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!!!!");
这段代码对我来说有一些问题:
- 我在异常本身中有文本。现在我有 BANG,但明天我可能想要 BONG,如果我决定改变它,我必须到处寻找!
- 我使用的是错误,而不是类型为 InvalidArgumentExcpetion 的新对象。这是正确的方法吗?
问题
所以现在我很困惑。
- 我应该像 throw 文档中那样创建一个新对象,还是创建一个错误消息?
- Java脚本没有我可以使用的 InvalidArgumentException 对象吗?
- 我应该如何进行才能以可维护的方式抛出使用 ECMA6 的错误 ?
请看下面的答案:
- 如果您想像 Java 中那样根据异常类型处理异常,您应该像文档中那样创建一个新对象。
- 如果您不想到处查找消息,请像在 Java 中那样创建一个新的错误列表。例如:
let errors = {
invalidOperation: 'Invalid operation',
unAuthorized: 'You are not authorized to use this function',
}
并使用它们代替
这样的硬编码字符串throw new InvalidOperationException(errors.invalidOperation);
- Java脚本没有InvalidArgumentException
经过研究,我现在找到了一个我喜欢的解决方案。特别感谢 Toan,我很乐意选择他的答案,但由于我确实觉得它仍然有点不完整,所以我决定根据自己的发现创建自己的答案。希望对大家有帮助!
问题:
使用Toan提出的方案:
这是可能的,但如果您想要自定义,您确实需要创建自己的对象。
答案:
- 如果您想像 Java 中那样根据异常类型处理异常,您应该像文档中那样创建一个新对象。 (作者 Toan Nguyen)
- Java脚本没有 InvalidArgumentException(来自 Toan Nguyen)
- 经过重新搜索,我找到了这个解决方案:
学分:
- 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。