Вопрос в том, требуется ли Throw
exception
или для предотвращения его возникновения. Это для игрового проекта.Бросить исключение или предотвратить его?
IndexOutOfBoundsException
против кодирования вокруг него.
У меня есть List<E>
private Attribute<List> attributes;
Способ получить элемент по индексу.
public Attribute getAttribute (int index) {
if (index < 0 || index >= attributes.size())
index = 0;
return attributes.get(index);
}
В этом случае я не выполняю 1-й элемент списка.
Представьтесь, что вы, как пользователь, играете в игру, выбирая вариант, а затем появляется это странное сообщение: 'IndexOutOfBoundsException при выборе оружия. Пожалуйста, сообщите администраторам игр. «Я не буду играть в эту игру ** когда-либо **. –
Это была моя первоначальная мысль. Я колебался, потому что мне кажется, что я сделал что-то очень плохое, когда я поставил себя в эту ситуацию, если бы это произошло. – Emz
Если вы пишете этот метод и знаете, что он может бросить это исключение в этих конкретных обстоятельствах, зачем вам писать код, который использует этот метод не так? Пользователю не понравится ваша игра, если она внезапно ошибается, игнорируя ошибки. И ошибки - ваш # 1 способ поиска ошибок. Передача индекса, который выходит за пределы, явно является ошибкой. – zapl