Возьмите этот метод
/**
* @return List of group IDs the person belongs to
*
*/
public List<String> getGroups() {
if (this.getId().equals("")) return null;
}
Я хотел бы выдать исключение, вместо этого возвращая пустой указатель, что должно бросить исключение, когда важный параметр не был установлен?
Я бы использовал IllegalArgumentException
, если параметр / аргумент контролируется извне, или IllegalStateException
, если метод просто вызывается в неподходящий момент (состояние). В вашем конкретном случае я думаю, что последнее. Альтернативой (сомнительной) является NullPointerException
.
Однако это должно быть явно задокументировано в @throws
, чтобы пользователь понимал причину.
Я бы использовал IllegalStateException, потому что идентификатор состояние собственника. Если бы идентификатор был передан как параметр, исключение IllegalArgumentException было бы правильным.
Если невозможно гарантировать, что идентификатор всегда установлен (например, требуя его в конструкторе, где вы можете проверить, что был передан действительный идентификатор), то я думаю, что другие предложения бросить IllegalStateException верны. Но было бы лучше попытаться убедиться, что ваш объект не может попасть в это состояние, если это вообще возможно
Я бы создал свой собственный тип исключения, расширив исключение. Таким образом, вызывающие функции могут перехватить это конкретное исключение и корректно обработать его по мере необходимости. Обратите внимание, вы можете сделать то же самое практически со всем, что расширяет исключение, но я предпочитаю создавать свои собственные классы исключений, чтобы я мог быть очень надежен в моей обработке исключений. Это, конечно, зависит от вас.