0

好的,对于一个类,我必须构建一个队列 ADT 并使用该 ADT 创建一个执行基本加/减的应用程序。问题是,当我尝试调用具有异常链接的队列方法时,我得到“错误:未报告的异常 FullCollectionException;必须被捕获或声明为被抛出”。

这是我的代码的样子。

   public void insert(Object element) throws FullCollectionException
   {
       if(isFull())
          throw new FullCollectionException("Queue");
       else
       {
         queue[count] = element;
         count++;
       }
    }  

isFull 方法只是做一个简单的比较来查看数组是否满足它的长度。那么使用它的类如下。

public class Stocks
{
   public static void main(String a[])
   {
       Queue q = new Queue();
       StackObject so = new StackObject();

       q.insert(10);
       q.insert(30);
   } 
 }

我尝试了几种不同的方法,但似乎都没有奏效。

4

4 回答 4

0

除非FullCollectionExceptionRuntimeException(未选中)的孩子,否则您将无法做到这一点。试试这个:

try {
  q.insert(10);
  q.insert(30);
} catch (FullCollectionException fce) {
  // Handle exception
}
于 2013-10-22T22:44:26.780 回答
0

您需要声明main()可能会引发该异常,如下所示:

public static void main(String a[]) throws FullCollectionException
{
   Queue q = new Queue();
   StackObject so = new StackObject();

   q.insert(10);
   q.insert(30);
}

或者您可以添加一个catch块,但只有在您有从异常中恢复的实际计划时才应该这样做。否则,实际上最好让您的程序失败,而不是默默地扫除问题。

于 2013-10-22T22:44:44.770 回答
0

您需要FullCollectionException在 main 方法中显式地抛出或捕获。

PS:如果您使用Eclipse或Netbeans等IDE编写代码,会提示您添加此类异常处理语句。

于 2013-10-22T22:45:25.777 回答
0

弄清楚了。我将异常作为我的任务的一部分,我只是让它们成为 Exception 而不是 RuntimeException 的孩子。感谢你的帮助 :))

于 2013-10-22T23:10:09.150 回答