无效参数异常或非法参数异常

2022-09-01 20:27:33

在Java中,什么时候应该投掷,什么时候投掷?来自 C# 背景,我们将有一个派生自 .如果我想在Java中实现等效的/我应该扩展还是?IllegalArgumentExceptionInvalidParameterExceptionArgumentNullExceptionArgumentExceptionArgumentNullExceptionParameterNullExceptionIllegalArgumentExceptionInvalidParameterException

注意:我不是在尝试实现一个/如果我能将这些与C#框架相匹配,这只会让我更好地理解。ArgumentNullExceptionParameterNullException


答案 1

显然没有必要对这些异常进行子类化,我会立即使用它们来发出信号,表明已经使用非法参数调用了一个方法。我总是在异常消息部分描述真正的原因。

java.security.InvalidParameterException已经是专为 JCA/JCE 引擎类 (JavaDoc) 使用而设计的子类,我不会在不同的上下文中使用它或子类化它。IllegalArgumentException


答案 2

首先感谢您的提问。现在我知道了.此异常属于包 java.security,并根据其 javadocInvalidParameterException

 * This exception, designed for use by the JCA/JCE engine classes, 
 * is thrown when an invalid parameter is passed 
 * to a method.

IllegalArgumentException属于java.lang,因此可以用于任何目的。

我相信在99.9%的情况下,你应该使用 IllegalArgumentException,并且只在安全上下文中使用 InvalidParameterException。