2013-10-22 139 views
0

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

这是我的代码的样子。

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); 
    } 
} 

我尝试了几种不同的东西,但都没有效果。

回答

0

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

try { 
    q.insert(10); 
    q.insert(30); 
} catch (FullCollectionException fce) { 
    // Handle exception 
} 
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块代替,但你只应该永远做,如果你有一个实际的计划来恢复异常。否则,让程序失败而不是悄无声息地清除地毯下的问题实际上会更好。

0

您需要在主要方法中明确丢弃或捕获FullCollectionException。 PS:如果您使用IDE(如Eclipse或Netbeans)编写代码,则系统会提示您添加此类异常处理语句。

0

想通了。我将异常作为我的任务的一部分,我只是让他们成为Exception的子代而不是RuntimeException。感谢您的帮助:))