2013-03-11 9 views
6

So eine der Methodenbeschreibungen Werfen geht wie folgt:eine UnsupportedOperationException

öffentliche BasicLinkedList addToFront (T Daten) Dieser Vorgang ist ungültig für eine sortierte Liste. Eine Nicht unterstützteOperationException wird generiert mit der Meldung "Ungültiger Vorgang für sortierte Liste."

Mein Code geht in etwa so:

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

Ist dies der richtige Weg, dies zu tun? Ich habe gerade die Nachricht mit println() ausgedruckt, aber gibt es eine andere Möglichkeit, die Nachricht zu generieren?

+1

Bessere System.out.printin zu verwenden (e.getMessage ()); innerhalb des Fangs. – Java42

+0

Sie werfen eine Ausnahme und fangen sie im Catch Block! Du verstehst es nicht. –

Antwort

14

Sie wollen nicht die Ausnahme in der Methode fangen - der Punkt ist, Anrufer wissen zu lassen, dass die Operation nicht unterstützt wird:

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

Aber das würde es für alle eingehenden Daten werfen. Sie müssen SortedList-Daten herausfiltern (sehen Sie sich meine Antwort an). – DigCamara

+0

Ok, lesen CoderNinja Kommentar, ist das SortedLinkedList eine Unterklasse von BasicLinkedList? Wenn dies der Fall ist, sollte die Methode "override" in SortedLinkedList die Ausnahme auslösen. Dies hat nichts mit dem Typ von T zu tun. – Jason

+0

Sie haben Recht. Ich habe meine Antwort so geändert, dass sie den Kommentar widerspiegelt. – DigCamara

2

Sie könnten Ihren Code neu schreiben, wie diese erreicht

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

, die im Grunde zu sein, was Sie fragen.

+0

Nun, die Idee ist, dass ich eine basicLinkedList-Klasse mit einer addToFront-Methode habe, aber in meiner sortedLinkedList-Klasse fügt die add-Methode den Knoten an der entsprechenden Position basierend auf der Sortierung hinzu. Daher kann addToFront nicht aufgerufen werden, da dies die sortedList beschädigen könnte. Was ich erreichen will, hängt nur davon ab, was die Frage stellt. Ich bin nicht sicher, wie ich die Nachricht erzeugen sollte (durch println oder durch die Ausnahme selbst wie wenn Sie all diesen roten Mist bekommen). – CoderNinja

+0

Entschuldigung. Ich habe deine Frage beim ersten Mal nicht richtig gelesen. – DigCamara

Verwandte Themen