これは、複数のキャッチブロックに関する私の質問の続きです。オブジェクトの返送とエラーの処理に対処する方法
更新されたコードは以下のとおりですが、draw()メソッドがintを返す必要があるというエラーが発生します。コンパイラに、endOfDeck()がintを返すことを認識させて、戻り要件を満たす方法はありますか?(「returnendOfDeck()」を参照)
これを達成するためのよりスマートな方法はありますか?
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();
}