gpt4 book ai didi

java - 当用户试图添加到一个完整的容器时抛出哪个异常

转载 作者:搜寻专家 更新时间:2023-11-01 01:21:58 24 4
gpt4 key购买 nike

我正在尝试为通用类型元素编写一个固定大小的队列。用户可以调用构造函数,提供一个大小并为该大小创建一个内部数组。(见下文)

class FixedSizeQ<E>{
private E[] q;
private int N;

public FixedSizeQ(int max) {
super();
q = (E[]) new Object[max];
N = 0;
}
..
}

我想为上面定义一个 isEmpty() 和 isFull() 方法以及一个 insert() 方法。如果客户端试图向已经满的数组添加一个元素,我想抛出一个异常。通过javadocs,我认为 IllegalStateException 将是抛出的正确异常。

public boolean isFull(){
return N == q.length;
}
public void insert(Item item){
if(isFull()){
throw new IllegalStateException("queue full");
}
...
}

我想知道我的理解是否正确..有人建议 IllegalArgumentException 更合适。有人可以建议吗?

最佳答案

我认为您应该让插入方法返回 boolean 值,如果对象已插入则返回 true,如果队列已满则返回 false。将对象添加到完整队列对我来说似乎不是异常情况。

无论如何,如果 Java API 中没有预定义的异常是很好的匹配,您可以创建自己的异常类型以最适合这种情况:

public class QueueFullException extends RuntimeException {
// or "extends Exception" if you want it checked
...
}

关于java - 当用户试图添加到一个完整的容器时抛出哪个异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com