2013-03-11 79 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