dam*_*mon 4 java queue exception
我正在尝试为泛型类型元素编写一个固定大小的队列.用户可以调用构造函数,提供一个大小,并为该大小创建一个内部数组.(见下文)
class FixedSizeQ<E>{
private E[] q;
private int N;
public FixedSizeQ(int max) {
super();
q = (E[]) new Object[max];
N = 0;
}
..
}
Run Code Online (Sandbox Code Playgroud)
我想到了为上面定义一个isEmpty()和isFull()方法以及一个insert()方法.如果客户端试图向已经完整的数组添加一个元素,我想抛出一个异常.通过javadocs,我以为IllegalStateException抛出是正确的例外.
public boolean isFull(){
return N == q.length;
}
public void insert(Item item){
if(isFull()){
throw new IllegalStateException("queue full");
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想知道我的理解是否正确.有人建议IllegalArgumentException更合适.有人可以提出建议吗?
我认为你应该让insert方法返回boolean,如果插入了对象则返回true,如果队列已满,则返回false.将对象添加到完整队列对我来说似乎不是一个例外情况.
在任何情况下,如果Java API中没有预定义的异常是一个很好的匹配,您可以创建自己的异常类型以最好地适应这种情况:
public class QueueFullException extends RuntimeException {
// or "extends Exception" if you want it checked
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6723 次 |
| 最近记录: |