using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch13CardLib
{
public class CardOutOfRangeException : Exception
{
private Cards deckContents;
public Cards DeckContents
{
get
{
return deckContents;
}
}
public CardOutOfRangeException(Cards sourceDeckContents) :
base("There are only 52 cards in the deck.")
{
deckContents = sourceDeckContents;
}
}
}
继承Exception
base("There are only 52 cards in the deck.")
触发时会传出括号中的文字信息,调用方法:
public Card GetCard(int cardNum)
{
if (cardNum >= 0 && cardNum <= 51)
{
// Code modified in section "Expanding and Using CardLib"
if ((cardNum == 51) && (LastCardDrawn != null))
LastCardDrawn(this);
return cards[cardNum];
}
else
throw new CardOutOfRangeException(cards.Clone() as Cards);
}
或者使用下面的方法调用CardOutOfRangeException :
Deck deck1 = new Deck();
try
{
Card myCard = deck1.GetCard(60);
}
catch (CardOutOfRangeException e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.DeckContents[0]);
}
Console.ReadKey();