Cor*_*ius 18 c# java exception
在Java中什么时候应该抛出IllegalArgumentException什么时候InvalidParameterException?从C#背景的,我们将有一个ArgumentNullException从派生ArgumentException.如果我想在Java中实现等效ArgumentNullException/ ParameterNullException应该扩展IllegalArgumentException或InvalidParameterException?
注意:我不是试图实现一个ArgumentNullException/ ParameterNullException这只会让我更好地理解我是否可以将它们与C#框架相匹配.
Ale*_*exR 16
首先要感谢你的问题.现在我知道了存在InvalidParameterException.此异常属于包java.security并且根据其javadoc
* This exception, designed for use by the JCA/JCE engine classes,
* is thrown when an invalid parameter is passed
* to a method.
Run Code Online (Sandbox Code Playgroud)
IllegalArgumentException属于java.lang,因此可用于任何目的.
我相信在99.9%的情况下,您应该使用IllegalArgumentException并仅在安全上下文中使用InvalidParameterException.
And*_*s_D 15
没有明显需要对这些异常进行子类化,我会立即使用它们来表示已经使用非法参数调用了一个方法.我总是在异常消息部分描述真正的原因.
java.security.InvalidParameterException已经是IllegalArgumentException JCA/JCE引擎类(JavaDoc)使用的子类,我不会在不同的上下文中使用或子类化它.
当您期望参数不为空时,已经有一个要抛出的异常:NullPointerException。一些程序员认为只有错误的代码才会抛出NullPointerException,但如果你真的希望参数不为空,并且你无法从这种情况中恢复过来,那就是抛出正确的异常。来自 JavaDoc:
当应用程序在需要对象的情况下尝试使用 null 时抛出。
但是,如果我们不是在谈论空值,而只是在谈论无效值,那么您应该抛出 IllegalArgumentException。来自 JavaDoc:
抛出以指示方法已传递非法或不适当的参数。
作为一般建议,我会说您应该熟悉 Java 异常(来自 java.lang 包),并适当地使用它们。如果找不到合适的异常,则扩展一个。
另请注意,异常“InvalidParameterException”位于“java.security”包中,这可能不是您想要的。
| 归档时间: |
|
| 查看次数: |
16163 次 |
| 最近记录: |