Hi all, here is an example implementation for a Bulgarian Exception.
Have nice time in the new year's eve and avoid this exception ;)
[Serializable]
class BulgarianException
: ApplicationException
{
[field: NonSerialized]
const ulong MIN_ALLOWED_GRAMS_RAKIA = 500;
[field: NonSerialized]
const ulong MIN_ALLOWED_GRAMS_WEIN = 1000;
[field: NonSerialized]
const ulong MIN_ALLOWED_GRAMS_BEER = 20 * 500; //1 kasa
[field: NonSerialized]
const ulong MIN_ALLOWED_GRAMS_SHOPSKA_SALAD = 5 * 1000;
[field: NonSerialized]
const ulong MIN_ALLOWED_GRAMS_MEZETA = 10 * 1000;
private ulong mGramsRakia;
private ulong mGramsWein;
private ulong mGramsBeer;
private ulong mGramsShopskaSalad;
private ulong mGramsMezeta;
public ulong GramsRakia
{
get { return this.mGramsRakia; }
}
public ulong GramsWein
{
get { return this.mGramsWein; }
}
public ulong GramsBeer
{
get { return this.mGramsBeer; }
}
public ulong GramsShopskaSalad
{
get { return this.mGramsShopskaSalad; }
}
public ulong GramsMezeta
{
get { return this.mGramsMezeta; }
}
public BulgarianException(ulong pGramsRakia, ulong pGramsWein, ulong pGramsBeer, ulong pGramsShopskaSalad, ulong pGramsMezeta, string pMessage, Exception pInnerException)
: base( pMessage, pInnerException)
{
this.mGramsRakia = pGramsRakia;
this.mGramsWein = pGramsWein;
this.mGramsBeer = pGramsBeer;
this.mGramsShopskaSalad = pGramsShopskaSalad;
this.mGramsMezeta = pGramsMezeta;
}
public BulgarianException(string pMessage, Exception pInnerException)
: this(0, 0, 0, 0, 0, pMessage, pInnerException)
{
}
public BulgarianException(string pMessage)
: this(pMessage, null)
{
}
public string GenericMessage
{
get
{
StringBuilder message = new StringBuilder();
message.Append(this.Message);
message.Append("\nInsufficient alcoholic/nutritious resources:\n");
if (mGramsRakia < MIN_ALLOWED_GRAMS_RAKIA)
{
message.Append(string.Format("Rakia: {0}, should be: {1}\n", mGramsRakia, MIN_ALLOWED_GRAMS_RAKIA));
}
if (mGramsWein < MIN_ALLOWED_GRAMS_WEIN)
{
message.Append(string.Format("Wein: {0}, should be: {1}\n", mGramsWein, MIN_ALLOWED_GRAMS_WEIN));
}
if (mGramsBeer < MIN_ALLOWED_GRAMS_BEER)
{
message.Append(string.Format("Beer: {0}, should be: {1}\n", mGramsBeer, MIN_ALLOWED_GRAMS_BEER));
}
if (mGramsShopskaSalad < MIN_ALLOWED_GRAMS_SHOPSKA_SALAD)
{
message.Append(string.Format("Shopska salad: {0}, should be: {1}\n", mGramsShopskaSalad, MIN_ALLOWED_GRAMS_SHOPSKA_SALAD));
}
if (mGramsMezeta < MIN_ALLOWED_GRAMS_MEZETA)
{
message.Append(string.Format("Mezeta: {0}, should be: {1}\n", mGramsMezeta, MIN_ALLOWED_GRAMS_MEZETA));
}
return message.ToString();
}
}
}
...
if (DateTime.Now.Equals(new DateTime(2007, 12, 31, 23, 59, 59))
&& (rakia < recommended_rakia
|| wein < recommended_wein
|| beer < recommended_beer
|| salad < recommended_salad
|| meze < recommended_meze))
{
throw new BulgarianException(rakia, wein, beer, salad, meze, "Oh, come on! It's new year, dude!!!", null);
}
Friday, December 14, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment