2012-04-01 7 views
2

У меня есть класс Java, который обрабатывает как однозначные, так и многозначные данные. Поэтому он предоставляет два метода: getValue() и getValues(). Тем не менее, я хочу бросить какое-то исключение, когда метод getValue вызывается для многозначных данных. Каков наиболее подходящий класс исключений, который я могу использовать? Я чувствую, что IllegalAccessException не подходит, потому что я не использую отражение или какую-либо такую ​​технику обнаружения; ни один из них не соответствует IllegalArgumentException, потому что я не передаю никаких аргументов как таковых.Нелегальный метод под названием

+2

Извините, но мне что-то смешно. Не могли бы вы рассказать нам больше о вашей структуре программы и даже, возможно, показать какой-то код? Возможно, вам нужен только один метод, и пусть он принимает параметр, который сообщает классу, сколько возвращаемых значений. Я не знаю, основываясь на том, что вы указали выше. И в отношении вашего вопроса, иногда проще и лучше создать для вас свой класс Exception. Но опять же, давайте сначала посмотрим, действительно ли вам это нужно. –

+0

Код выглядит примерно так: class {private Collection values; // возвращает одно значение или генерирует исключение public T getValue(); // возвращает несколько значений или одно значение, обернутое в коллекцию public Collection getValues ​​(); } – Neel

ответ

0

Вы можете сделать свое собственное исключение бросить специально для этого класса поищите на этом link

вы могли бы сделать что-то вроде этого:

class getValException extends Exception 
{ 
    public getValException(String message) 
    { 
     super(message); 
    } 
} 
+2

Возможно, создание моего собственного исключения может быть отличной идеей, если это абсолютно необходимо, потому что это потребует от людей изучения нового API, правильно? – Neel

+2

Блох говорит в Effective Java 2nd, что создание нового исключения, когда есть уже существующие, которые подходят, является плохой практикой кодирования. – vaxquis

6

java.lang.IllegalStateException является лучшим стандартным исключением для этого.

JavaDoc говорит:

сигналы о том, что метод был вызван в незаконной или неподходящее время. Другими словами, среда Java или приложение Java не находятся в соответствующем состоянии для запрошенной операции.

В вашем случае это означает, что вызванный метод был вызван в ненадлежащее время.

+1

Звучит немного непригодным для моего дела, потому что мой объект не находится в * незаконном * состоянии как таковом. – Neel

+0

@Neel: Пожалуйста, проверьте мои изменения. –

+0

Ummm, может быть, не подходящее время, не так ли? Но факт заключается в том, что мой объект должен быть многозначным, значение которого должно быть возвращено getValue - это неопределенно (нулевое значение может не ожидаться) – Neel

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