2013-03-11 7 views
6

Так один из описаний метода выглядит следующим образом:Бросив UnsupportedOperationException

общественного BasicLinkedList addToFront (T данные) Эта операция недопустима для отсортированного списка. Исключение 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

+0

Вы бросаете исключение и поймаете его в Catch Block! Ты не поймаешь это. –

ответ

14

Вы не хотите, чтобы поймать исключения в методе - дело в том, чтобы звонящие знать, что операция не поддерживается:

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

Но это бросило бы его для любых входящих данных. Вам нужно выделить данные типа SortedList (посмотрите на мой ответ). – DigCamara

+0

Хорошо, прочитав комментарий CoderNinja, этот SortedLinkedList является подклассом BasicLinkedList? Если это так, то метод overriden в SortedLinkedList должен генерировать исключение. Это не имеет ничего общего с типом T. – Jason

+0

Вы правы. Я изменил свой ответ, чтобы отразить комментарий. – DigCamara

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

+0

Извините. Не прочитал ваш вопрос правильно в первый раз. – DigCamara

Смежные вопросы