java—当输入导致indexoutofboundsexception时,应该引发哪个异常?

jogvjijk  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(371)

我正在编写一个方法来查找列表中第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 输入可以是用户输入,也可以来自程序中的其他位置,因此我不确定哪一个是适用的。)

siv3szwd

siv3szwd1#

public class StorageFileNotFoundException extends StorageException {

    /**
     * 
     */
    private static final long serialVersionUID = -4008604110260611040L;

    public StorageFileNotFoundException(String message) {
        super(message);
    }

    public StorageFileNotFoundException(String message, Throwable cause) {
        super(message, cause);
    }

}

下面是一个例子

tf7tbtn2

tf7tbtn22#

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

相关问题