我正在编写一个方法来查找列表中第x个最大的条目。标题是
<T extends Comparable<T>> T max(List<T> list, int rank) {...}
其中rank是找到最大值的地方,(即0是最大值,1是第二大值。。。, list.size() -1
是最小值)。
如果 rank
给定的参数 >= list.size()
? 它是一个 IndexOutOfBoundsException
,因为您请求的索引值超出了界限,或者是 IllegalArgumentException
,因为 IndexOutOfBoundsExeption
是由给定的参数引起的吗?
(我是在何时使用 IllegalArgumentException
,但这让我更加困惑。就我而言 rank
输入可以是用户输入,也可以来自程序中的其他位置,因此我不确定哪一个是适用的。)
2条答案
按热度按时间siv3szwd1#
下面是一个例子
tf7tbtn22#
您可以创建自己的未经检查的运行时异常,以清楚地识别问题并抛出该异常:类似于“rankigreaterthanlistsizeexception”。异常名称提供了比其他选项更详细的信息。您可以在消息中包含提供的排名和列表大小,以获得额外的上下文。