2013-10-22 137 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。感謝您的幫助:))