Recentemente, ho avuto un colloquio con la compagnia e mi hanno dato un problema di codifica. Mi è stato dato un programma relativo al mazzo di carte e uno dei metodi era mescolare il mazzo di carte. Così ho scritto il programma come:Quando lanciare un'eccezione di runtime?
/** 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);
}
}
Nel codice di cui sopra, ho gettato IllegalArgumentException cui sono più dubbi su. In quali condizioni dovrebbe effettivamente generare un'eccezione di runtime? Dovremmo effettivamente lanciare un'eccezione di runtime?
Grazie
"Nel codice precedente, ho lanciato IllegalArgumentException di cui sono più dubbioso". Vuoi dire 'gettare nuovo IllegalArgumentException();'? – motoku
Non vedo nulla di sbagliato con "fallire presto" qui lanciando un 'IllegalArgumentException', soprattutto perché il passaggio di 'null' non sarebbe valido. Probabilmente prenderei in considerazione l'uso della versione di "IllegalArgumentException" che accetta un 'String' per descrivere cosa è andato storto. Se shuffle fosse un metodo della classe Deck che eliminerebbe qualsiasi necessità di verificare la presenza di null. –
Dal [javadoc] (http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html): * IllegalArgumentException: generato per indicare che un metodo è stato passato illegale o inappropriato argomento * –