这是我关于多个 catch 块如何处理返回对象和处理错误的问题的后续内容
我更新的代码如下,但是我收到一个错误,即我的 draw() 方法必须返回一个 int,有没有办法让编译器认识到 endOfDeck() 将返回一个 int,从而满足返回要求?(参见“返回 endOfDeck())
有什么更聪明的方法可以做到这一点?
import java.util.ArrayList;
import java.util.ListIterator;
/**
* @author L
*
*/
public abstract class Deck
{
private ArrayList<Card> cards;
private ListIterator<Card> deckPosition = cards.listIterator();
private Card lastDrawn;
/**
*
*/
public Deck()
{
}
public int draw()
{
try
{
if(deckPosition.hasNext())
{
lastDrawn = deckPosition.next();
return 1;
}
else if(cards.isEmpty())
{
throw new EmptyDeckException();
}
else
{
throw new EndOfDeckException();
}
}
catch(EmptyDeckException e)
{
emptyDeck();
return 0;
}
catch(EndOfDeckException e)
{
return endOfDeck();
}
catch(Exception e)
{
System.out.println("Exception when drawing a card, check try/catch block in draw() method of Card");
e.printStackTrace();
}
}
public abstract int endOfDeck();
public abstract void emptyDeck();
}