Похоже, что NotImplementedException был удален из Commons Lang 3.0.
Михаил Юнкин
13
Я думаю, что поскольку UnsupportedOperationException является частью структуры коллекций, его следует использовать только в том случае, если он используется в контексте коллекций. В противном случае следует использовать RuntimeException. docs.oracle.com/javase/7/docs/technotes/guides/collections/…
Я говорю, что это что-то совсем другое. NIE также говорит, что это может еще не быть реализовано, где UOE говорит мне, что никогда не будет ...
Dykam
5
@Dykam, тогда не будет ли NotImplementedYetException?
Ишай
106
@Dykam: new UnsupportedOperationException("Not implemented yet")- счастлив?
Майкл Боргвардт
3
Я не имел в виду, что это было хуже, просто был другой вариант использования.
Dykam
6
new UnsupportedOperationException («Еще не реализовано») - отличная идея! :) в lang3 почему-то у меня нет NotImplementedException, так что это отличное решение
ufk
55
Вы можете сделать это сами (это я и сделал) - чтобы не беспокоиться об обработке исключений, вы просто расширяете RuntimeException, ваш класс может выглядеть примерно так:
Вы можете расширить его, чтобы получить сообщение - но если вы используете метод, как я (то есть, как напоминание, что еще нужно что-то реализовать), то обычно нет необходимости в дополнительных сообщениях.
Смею сказать, что я использую только этот метод, пока я нахожусь в процессе разработки системы, так что мне легче не забывать, какие методы все еще не реализованы должным образом :)
Мне больше всего нравится это решение, потому что легко иметь специальный обработчик ошибок, его легко найти, найдя все ссылки на конструктор NotImplementedException, и это всего лишь несколько строк кода. Но немного неудобно объявлять новый класс с собственным файлом.
D Coetzee
1
Согласен. Это лучше, чем использование UnsupportedOperationExceptionна мой взгляд. Теперь, если бы только Java добавила это в общую библиотеку исключений!
раздавить
12
Как уже упоминалось, JDK не имеет близкого соответствия. Тем не менее, моя команда иногда использует и такое исключение. Мы могли бы поступить так, UnsupportedOperationExceptionкак подсказывают другие ответы, но мы предпочитаем собственный класс исключений в нашей базовой библиотеке, в котором отсутствуют конструкторы:
publicclassNotYetImplementedExceptionextendsRuntimeException{/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/@DeprecatedpublicNotYetImplementedException(){}/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/@DeprecatedpublicNotYetImplementedException(String message){super(message);}}
Этот подход имеет следующие преимущества:
Когда читатели видят NotYetImplementedException, они знают, что реализация была запланирована и была либо забыта, либо все еще выполняется, тогда как UnsupportedOperationExceptionговорит (в соответствии с договорами о сборе ), что что-то никогда не будет реализовано. Вот почему у нас есть слово «пока» в названии класса. Также в IDE можно легко перечислить сайты вызовов.
С предупреждением об устаревании на каждом сайте вызовов ваша среда IDE и инструмент статического анализа кода могут напомнить вам, где вам еще нужно что-то реализовать. (Такое использование амортизации может показаться неправильным для некоторых, но на самом деле амортизация не ограничивается объявлением об удалении .)
Конструкторы устарели, а не класс. Таким образом, вы получите предупреждение об устаревании только внутри метода, который нужно реализовать, а не в importстроке ( хотя JDK 9 исправил это ).
Нет, нет, и, вероятно, его нет, потому что для него очень мало действительных применений. Я бы дважды подумал, прежде чем его использовать. Кроме того, это действительно легко создать себя.
Пожалуйста, обратитесь к этой дискуссии о том, почему это даже в .NET.
Я думаю UnsupportedOperationException, что это близко, хотя и не говорит, что операция просто не реализована, но даже не поддерживается. Это может означать, что действительная реализация невозможна. Почему операция не поддерживается? Должен ли он вообще быть там? Сегрегация интерфейса или вопросы подстановки Лисков может быть?
Если бы это было в процессе разработки, я бы пошел ToBeImplementedException, но я никогда не ловил себя на том, чтобы определить конкретный метод, а затем оставлял его так долго, что он превращал его в производство, и возникла бы необходимость в таком исключении.
Я думаю,
java.lang.UnsupportedOperationException
это то, что вы ищете.источник
new UnsupportedOperationException("Not implemented yet")
- счастлив?Вы можете сделать это сами (это я и сделал) - чтобы не беспокоиться об обработке исключений, вы просто расширяете RuntimeException, ваш класс может выглядеть примерно так:
Вы можете расширить его, чтобы получить сообщение - но если вы используете метод, как я (то есть, как напоминание, что еще нужно что-то реализовать), то обычно нет необходимости в дополнительных сообщениях.
Смею сказать, что я использую только этот метод, пока я нахожусь в процессе разработки системы, так что мне легче не забывать, какие методы все еще не реализованы должным образом :)
источник
UnsupportedOperationException
на мой взгляд. Теперь, если бы только Java добавила это в общую библиотеку исключений!Как уже упоминалось, JDK не имеет близкого соответствия. Тем не менее, моя команда иногда использует и такое исключение. Мы могли бы поступить так,
UnsupportedOperationException
как подсказывают другие ответы, но мы предпочитаем собственный класс исключений в нашей базовой библиотеке, в котором отсутствуют конструкторы:Этот подход имеет следующие преимущества:
NotYetImplementedException
, они знают, что реализация была запланирована и была либо забыта, либо все еще выполняется, тогда какUnsupportedOperationException
говорит (в соответствии с договорами о сборе ), что что-то никогда не будет реализовано. Вот почему у нас есть слово «пока» в названии класса. Также в IDE можно легко перечислить сайты вызовов.import
строке ( хотя JDK 9 исправил это ).источник
Нет, нет, и, вероятно, его нет, потому что для него очень мало действительных применений. Я бы дважды подумал, прежде чем его использовать. Кроме того, это действительно легко создать себя.
Пожалуйста, обратитесь к этой дискуссии о том, почему это даже в .NET.
Я думаю
UnsupportedOperationException
, что это близко, хотя и не говорит, что операция просто не реализована, но даже не поддерживается. Это может означать, что действительная реализация невозможна. Почему операция не поддерживается? Должен ли он вообще быть там? Сегрегация интерфейса или вопросы подстановки Лисков может быть?Если бы это было в процессе разработки, я бы пошел
ToBeImplementedException
, но я никогда не ловил себя на том, чтобы определить конкретный метод, а затем оставлял его так долго, что он превращал его в производство, и возникла бы необходимость в таком исключении.источник