最近,我接受了公司的采访,他们给了我一个编码问题.我得到了与卡片组相关的程序,其中一种方法是洗牌.所以我把程序写成:
/** 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);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我抛出了IllegalArgumentException,这是我最怀疑的.在什么条件下应该实际抛出运行时异常?我们应该抛出运行时异常吗?
谢谢
das*_*ght 33
我们应该抛出运行时异常吗?
是的,我们应该.运行时异常用于特定目的 - 它们表示编程问题,只能通过更改代码来修复,而不是更改程序运行的环境.
在什么条件下应该实际抛出运行时异常?
使用类或方法的方式检测错误时,抛出运行时异常.
通常,当您需要抛出运行时异常时,有两种情况:
从这个意义上说,你的代码很好:它完全适合第一类,即传递无效的参数值.我会做的一件事略有不同的是添加一条消息来说明哪个参数的值无效,但在你的情况下它并不重要,因为那里只有一个参数.
Doo*_*nob 11
IllegalArgumentException
事实上,它是一个子类RuntimeException
.
最好是更具体一点,以帮助其他程序员.我肯定更喜欢IllegalArgumentException
它,因为它最好地描述了究竟出了什么问题,但实际上,任何一个都可行.
归档时间: |
|
查看次数: |
23826 次 |
最近记录: |