如何为此方法添加错误捕获?

时间:2015-05-07 15:11:45

标签: java arraylist

我想添加错误捕获的方法是:

private void DealCard() {
    Card c = deck.removeTopCard();
    onTable.add(c);
    System.out.println(c);
}

它允许您按下GUI中的一个案例,然后在卡片上打印一张卡片(表格列表)。您可以继续按此案例来处理更多卡片。如何添加错误捕获,以便一旦处理了所有52张牌的牌组,它就会显示一条消息,例如"整个牌组处理",因为目前它只是在您处理完所有牌后中断试图处理另一个。

2 个答案:

答案 0 :(得分:0)

private void DealCard() {

  try {
      Card c = deck.removeTopCard();
      onTable.add(c);
      System.out.println(c);
  } catch(Exception ex) {
      // handle the exception here
  }

}

答案 1 :(得分:0)

你需要一个if条件来检查deck中的卡片数量(我假设Card的一个arraylist),看你是否还有卡片。这是一个例子:

private void DealCard() {

  if(!deck.isEmpty())
  {
     Card c = deck.removeTopCard();
     onTable.add(c);
     System.out.println(c);
  }
  else 
  {
     //print something to notify user that the decks is empty, or someother form of handling.
  }
}

另一个选择是将if-else条件放在removeTopCard()方法中,这更像是一个编程原则,你有Seperation of Concerns确保一个方法只做一件事,并检查为空甲板可能是removeTopCard()的工作,但这是你的选择。

我建议进行错误检查而不是捕获/抛出异常,因为只有当它们真正异常时才会抛出错误,有一个空的套牌似乎是一个经常会遇到的问题,而不是超级特殊情况,所以你应该处理它。抛出异常是非常昂贵的,如果你只是一个初学者并且刚刚开始,那对你来说可能并不重要(我上课的课程并不在乎),但如果从长远来看,你想要考虑这个问题。 Here's an SO question with more information on that。您可能希望阅读更多有关if-else条件,处理异常和空值以及其他知识的概念。