У меня есть класс Java, который обрабатывает как однозначные, так и многозначные данные. Поэтому он предоставляет два метода: getValue()
и getValues()
. Тем не менее, я хочу бросить какое-то исключение, когда метод getValue
вызывается для многозначных данных. Каков наиболее подходящий класс исключений, который я могу использовать? Я чувствую, что IllegalAccessException
не подходит, потому что я не использую отражение или какую-либо такую технику обнаружения; ни один из них не соответствует IllegalArgumentException
, потому что я не передаю никаких аргументов как таковых.Нелегальный метод под названием
ответ
UnsupportedOperationException
- наиболее распространенное и универсальное бесконтрольно исключения во время выполнения в Java.
http://docs.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html
Прохладный! Спасибо ... это звучит прекрасно! – Neel
Вы можете сделать свое собственное исключение бросить специально для этого класса поищите на этом link
вы могли бы сделать что-то вроде этого:
class getValException extends Exception
{
public getValException(String message)
{
super(message);
}
}
Возможно, создание моего собственного исключения может быть отличной идеей, если это абсолютно необходимо, потому что это потребует от людей изучения нового API, правильно? – Neel
Блох говорит в Effective Java 2nd, что создание нового исключения, когда есть уже существующие, которые подходят, является плохой практикой кодирования. – vaxquis
java.lang.IllegalStateException
является лучшим стандартным исключением для этого.
JavaDoc говорит:
сигналы о том, что метод был вызван в незаконной или неподходящее время. Другими словами, среда Java или приложение Java не находятся в соответствующем состоянии для запрошенной операции.
В вашем случае это означает, что вызванный метод был вызван в ненадлежащее время.
Звучит немного непригодным для моего дела, потому что мой объект не находится в * незаконном * состоянии как таковом. – Neel
@Neel: Пожалуйста, проверьте мои изменения. –
Ummm, может быть, не подходящее время, не так ли? Но факт заключается в том, что мой объект должен быть многозначным, значение которого должно быть возвращено getValue - это неопределенно (нулевое значение может не ожидаться) – Neel
- 1. метод под названием mergeNumbers
- 2. Чистый виртуальный метод под названием
- 3. Неверный метод перегрузки под названием
- 4. Чистый виртуальный метод под названием
- 5. Как решить «чистый виртуальный метод под названием«
- 6. Пытались вызвать неопределенный метод под названием «createQueryBuilder»
- 7. Как прослеживать каждый метод под названием
- 8. PHPUnit mocks - метод assert под названием
- 9. PHP: Предоставьте SOAP-метод под названием «echo»
- 10. Как проверить метод под названием «метод()» с макетом PHPUnit?
- 11. метод вызова в сборе, когда метод View под названием
- 12. iOS Restkit needNewBodyStream под названием
- 13. DidSelect Аннотации, получаемые под названием
- 14. отображается под названием активности родителей
- 15. unrecognized selector isPitched под названием
- 16. Тест-драйв Grails проверяет макетный метод под названием
- 17. Как добавить новый метод под названием numberOfDigits() в java?
- 18. Несколько экземпляров Session Bean и метод @PostConstruct под названием
- 19. Rails 3.2.3 Ошибка Carrierwave-Gem "частный метод` write_uploader 'под названием «
- 20. android DexClassLoader. Я не могу получить метод под названием
- 21. ошибка Yii CList - не метод или замыкание под названием «SetReadOnly»
- 22. QNetworkAccessManager :: get() вызывают чистый виртуальный метод под названием
- 23. Пытались вызвать неопределенный метод под названием «фильтр» класса «DOMElement»
- 24. не член под названием dequeueReusableCellWithIdentifier
- 25. Как получить __add__ под названием
- 26. Нет модуля под названием pyglet
- 27. Используйте таблицу под названием «external»
- 28. NLP Tagger под названием SENNA
- 29. контекста отсутствует под названием теста
- 30. нет пакета под названием 'rpart.plot'
Извините, но мне что-то смешно. Не могли бы вы рассказать нам больше о вашей структуре программы и даже, возможно, показать какой-то код? Возможно, вам нужен только один метод, и пусть он принимает параметр, который сообщает классу, сколько возвращаемых значений. Я не знаю, основываясь на том, что вы указали выше. И в отношении вашего вопроса, иногда проще и лучше создать для вас свой класс Exception. Но опять же, давайте сначала посмотрим, действительно ли вам это нужно. –
Код выглядит примерно так: class {private Collection values; // возвращает одно значение или генерирует исключение public T getValue(); // возвращает несколько значений или одно значение, обернутое в коллекцию public Collection getValues (); } –
Neel