Недавно у меня был собеседование с компанией, и они дали мне проблему с кодированием. Мне была дана программа, связанная с колодой карт, и одним из способов было перетасовать колоду карт. Поэтому я написал программу, как:Когда бросать исключение во время выполнения?
/** Shuffle the list of cards so that they are in random order
* @param d Deck of cards*/
public static void shuffle(Deck d)
{
if(d == null)
throw new IllegalArgumentException();
Random randomGenerator = new Random();
List<Card> cards = d.getDeckOfCards(); // cards is basically Linked List.. cards = new LinkedList<Cards>()
for(int i=0;i<cards.size();i++)
{
int randomNumber = randomGenerator.nextInt(52);
Card c1 = cards.remove(randomNumber);
Card c2 = cards.remove(0);
cards.add(0, c1);
cards.add(randomNumber,c2);
}
}
В приведенном выше коде, я бросил IllegalArgumentException который я больше всего сомневался. В каких условиях на самом деле нужно выбросить исключение во время выполнения? Должно ли мы на самом деле выбросить исключение во время выполнения?
Благодаря
«В приведенном выше коде я выбрал IllegalArgumentException, в котором я наиболее сомневаюсь». Вы имеете в виду 'throw new IllegalArgumentException();'? – motoku
Я не вижу ничего плохого в том, что «неудачно рано» здесь, выбрасывая «IllegalArgumentException», тем более что «null» будет недействительным. Я бы, вероятно, подумал об использовании версии 'IllegalArgumentException', которая берет' String', чтобы описать, что пошло не так. Если shuffle был методом класса Deck, который бы устранил необходимость проверки нулей. –
Из [javadoc] (http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html): * IllegalArgumentException: брошено, чтобы указать, что метод был передан незаконным или неуместным Аргумент * –