我想知道是否可以在此方法的标头中删除IllegalArgumentException,将其包含在方法的主体中,并且仍以相同的方式工作吗?
谢谢!
public Card(int value, String suit) throw IllegalArgumentException {
LinkedList<String> suits = new LinkedList<>(Arrays.asList("spades", "hearts", "diamonds", "clubs"));//all suits in the lower case
if(value >= 1 && value <= 13 && suits.contains(suit.toLowerCase())) {
this.value = value;
this.suit = suit;
} else {
throw new IllegalArgumentException("Illegal suit-value combination");//throw exception in case value or suit is wrong
}
}
答案 0 :(得分:2)
您不需要在方法声明中显式声明RuntimeException
。由于IllegalArgumentException
是RuntimeException
,因此可以将其删除。
运行时异常可能在程序中的任何地方发生,在典型情况下,它们可能非常多。必须在每个方法声明中添加运行时异常会降低程序的清晰度。因此,编译器不需要捕获或指定运行时异常(尽管可以)。
您可以在方法的JavaDoc部分中提到它。这为使用者提供了有关引发的任何未经检查的异常的提示。通常还会将此信息间接附加到参数中。
/**
* @throws IllegalArgumentException if the suite combination is illegal
*/
/**
* @param myParam the param, must not be null
*/
参数验证通常包括:如果一个参数不符合要求,则抛出IllegalArgumentException
。由于这些列在JavaDoc中(此处为 not null ),如果程序员通过null
,则是程序员的错。