接口和运行时异常的Java模式

接口和运行时异常的Java模式,java,interface,runtimeexception,illegalargumentexception,method-signature,Java,Interface,Runtimeexception,Illegalargumentexception,Method Signature,我正在我的一个项目中使用以下模式 公共接口Foo{ //当给定一个正数时,将其加倍 公共整数枚举器(整数); } 公共类FooImpl{ 公共整数枚举器(整数){ 如果(数字

我正在我的一个项目中使用以下模式

公共接口Foo{
//当给定一个正数时,将其加倍
公共整数枚举器(整数);
}
公共类FooImpl{
公共整数枚举器(整数){
如果(数字<0){
抛出新的IllegalArgumentException(“数字必须为正”)
}
返回号码*2;
}
}
关于这个设计,有一件主要的事情一直困扰着我。使用此接口实现的任何人都不清楚他们是否需要处理IllegalArgumentException。同样,如果传入负数,我希望该接口的其他实现引发此异常

我考虑了几种解决方法:

1) 什么都不做,这个图案很好,很正常

2) 而是抛出一个自定义检查的异常。这感觉很尴尬,因为IllegalArgumentException非常适合此错误

3) 在方法签名中添加“抛出IllegalArgumentException”。我在项目中使用的java代码质量扫描器声称,像这样在签名中抛出RuntimeException是一种代码味道,应该避免


我希望有人能解释一下,我想做的事情是否有一个好的模式。我不知道我是否过度设计了一些东西,或者是否正确地考虑了这种情况。

我会创建您自己的检查异常-类似于“NegativeEnumberException”,因为它描述了导致此错误的原因

RuntimeError
s如
IllegalArgumentException
通常是在程序员出错时抛出的-如果您希望捕获它,那么应该使用选中的

您始终可以添加带有
@throws
注释的Javadoc connect,但从您所描述的内容来看,当调用方无法处理异常时,最好让编译器barf