练习文件:
QueueFullException.java
QueueEmptyException.java
固定队列.java
QExcDemo.java
在这个项目中,为队列类(Queue)创建了两个自定义异常,分别指示满队列和空队列的错误情况。这些异常由 put() 和 get() 方法使用。
队列异常:
FixedQueue 类实现:
异常和FixedQueue类代码:
QueueFullException.java
public class QueueFullException extends Exception { int size; QueueFullException(int s) { size = s; } public String toString() { return "\nQueue is full. Maximum size is " + size; } }
QueueEmptyException.java:
public class QueueEmptyException extends Exception { public String toString() { return "\nQueue is empty."; } }
FixedQueue.java:
class FixedQueue implements ICharQ { private char q[]; private int putloc, getloc; public FixedQueue(int size) { q = new char[size]; putloc = getloc = 0; } public void put(char ch) throws QueueFullException { if (putloc == q.length) throw new QueueFullException(q.length); q[putloc++] = ch; } public char get() throws QueueEmptyException { if (getloc == putloc) throw new QueueEmptyException(); return q[getloc++]; } }
使用 QExcDemo 进行测试:
QExcDemo类模拟队列的使用:
插入元素直到超过限制,抛出 QueueFullException。
它尝试通过抛出 QueueEmptyException 从空队列中删除元素。
class QExcDemo { public static void main(String args[]) { FixedQueue q = new FixedQueue(10); char ch; int i; try { for(i=0; i < 11; i++) { System.out.print("Attempting to store : " + (char) ('A' + i)); q.put((char) ('A' + i)); System.out.println(" - OK"); } } catch (QueueFullException exc) { System.out.println(exc); } try { for(i=0; i < 11; i++) { System.out.print("Getting next char: "); ch = q.get(); System.out.println(ch); } } catch (QueueEmptyException exc) { System.out.println(exc); } } }
更新了 ICharQ 界面:
ICharQ 现在在 put() 和 get() 方法中包含抛出异常,反映了固定队列抛出的异常。
public interface ICharQ { void put(char ch) throws QueueFullException; char get() throws QueueEmptyException; }
预期输出:
程序会显示指示元素插入和删除成功的消息,以及错误消息:
队列已满。当队列已满时,最大大小为 10。
队列为空。当尝试从空队列中删除元素时。
以上是尝试向 Queue 类添加异常的详细内容。更多信息请关注PHP中文网其他相关文章!