最近,我接受了公司的采访,他们给了我一个编码问题。我得到了与纸牌有关的程序,其中一种方法是将纸牌洗牌。因此,我将该程序编写为:
/** 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 。在什么情况下实际上应该抛出运行时异常?我们是否应该实际抛出运行时异常?
谢谢
我们是否应该实际抛出运行时异常?
是的,我们应该。运行时异常有特定的用途-它们发出编程问题,只能通过更改代码来解决,而不是更改程序运行的环境。
在什么情况下实际上应该抛出运行时异常?
当使用类或方法的使用方式检测到错误时,将引发运行时异常。
通常,有两种情况需要抛出运行时异常:
从这个意义上讲,您的代码很好:它正好适合第一类,即传递无效的参数值。我要做的一件事稍有不同,就是添加一条消息,说明哪个参数具有无效值,但是在您的情况下这并不重要,因为那里只有一个参数。