首页 > 解决方案 > 当输入导致 IndexOutOfBoundsException 时应该抛出哪个异常?

问题描述

我正在编写一种方法来查找列表中的第 X 个最大条目。标题是

<T extends Comparable<T>> T max(List<T> list, int rank) {...}

其中 rank 是找到最大值的位置,(即 0 是最大值,1 是第二大,...,list.size() -1是最小值)。

rank如果给出的参数是,我应该抛出什么异常>= list.size()?是IndexOutOfBoundsException, 因为您请求的索引值超出范围,还是IllegalArgumentException因为 ,IndexOutOfBoundsExeption是由给定参数引起的?

(我在何时使用 an 时阅读了这篇IllegalArgumentException文章,但这让我更加困惑。在我的情况下,rank输入可能是用户输入或来自程序中的不同位置,所以我不确定哪个适用。)

标签: javaexception

解决方案


您可以创建自己的未经检查的运行时异常,清楚地识别问题并抛出:类似于“RankIsGreaterThanListSizeException”。异常名称比任何其他选项都提供更多详细信息。您可以在消息中包含提供的排名和列表大小以获得额外的上下文。


推荐阅读