2013-03-11 107 views
6

所以該方法描述中的一個去如下:投擲一個UnsupportedOperationException

公共BasicLinkedList addToFront(T data)該操作是用於排序列表無效 。將使用消息「排序列表的無效操作」生成UnsupportedOperationException 。

我的代碼是這樣的:

public BasicLinkedList<T> addToFront(T data) { 
    try { 
     throw new UnsupportedOperationException("Invalid operation for sorted list."); 
    } catch (java.lang.UnsupportedOperationException e) { 
     System.out.println("Invalid operation for sorted list."); 
    } 
    return this; 
} 

這是這樣做的正確方法嗎?我只是用println()打印出來的消息,但是有什麼不同的方式來生成消息?

+1

最好使用的System.out.println(e.getMessage( ));在捕獲。 – Java42 2013-03-11 00:55:53

+0

您拋出異常並將其捕獲到捕獲塊中!你不抓住它。 – 2017-09-09 19:33:51

回答

14

你不想趕在你的方法例外 - 關鍵是要告知調用者操作不支持:

public BasicLinkedList<T> addToFront(T data) { 
    throw new UnsupportedOperationException("Invalid operation for sorted list."); 
} 
+0

但是這會導致任何傳入的數據。你需要單獨列出SortedList類型的數據(看我的答案)。 – DigCamara 2013-03-11 01:01:35

+0

好的,閱讀CoderNinja的評論,這是SortedLinkedList BasicLinkedList的子類嗎?如果是這樣,那麼SortedLinkedList中的overriden方法應該拋出異常。這與T的類型無關。 – Jason 2013-03-11 01:08:50

+0

你是對的。我改變了我的答案以反映評論。 – DigCamara 2013-03-11 01:24:45

2

你可以重寫你的代碼是這樣

public BasicLinkedList<T> addToFront(T data) throws UnsupportedOperationException { 
    if (this instanceof SortedList) { 
     throw new UnsupportedOperationException("Invalid operation for sorted list."); 
    }else{ 
     return this; 
    } 
} 

,基本上完成你的要求。

+0

這個想法是,我有一個basicLinkedList類,它有一個addToFront方法,但在我的sortedLinkedList類中,add方法根據排序將節點添加到適當的位置。所以addToFront不能被調用,因爲這可能會破壞sortedList。至於我想完成的事情僅僅取決於問題的要求。我不確定應該如何生成消息(通過println?或者通過異常本身,比如當你得到所有紅色廢話時)。 – CoderNinja 2013-03-11 00:53:55

+0

對不起。第一次沒有正確閱讀你的問題。 – DigCamara 2013-03-11 00:55:38