# HG changeset patch # User IBBoard # Date 1309619417 0 # Node ID d9bf78a8f5174fb45bd654b58518b56495a36e98 # Parent 13793f3a2a2e50e3b4549cc0a5377c338efc1616 Re #351: Add extensible requirement handling method * Wrap exception from integer parsing diff -r 13793f3a2a2e -r d9bf78a8f517 API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs --- a/API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs Sat Jul 02 14:59:45 2011 +0000 +++ b/API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs Sat Jul 02 15:10:17 2011 +0000 @@ -27,16 +27,26 @@ foreach (string requirement in data.Split('|')) { string[] requirementParts = requirement.Split(':'); - UnitType unitType = race.GetUnitType(requirementParts[0]); + string unitID = requirementParts[0]; + UnitType unitType = race.GetUnitType(unitID); if (unitType == null) { - throw new InvalidRequirementException(String.Format("Invalid unit type '{0}' for 'Requires at least N units' requirement", requirementParts[0])); + throw new InvalidRequirementException(String.Format("Invalid unit type '{0}' for 'Requires at least N units' requirement", unitID)); } if (requirementParts.Length == 2) { - req.AddUnitTypeRequirement(unitType, Int32.Parse(requirementParts[1])); + string amount = requirementParts[1]; + + try + { + req.AddUnitTypeRequirement(unitType, Int32.Parse(amount)); + } + catch (FormatException ex) + { + throw new InvalidRequirementException(String.Format("Invalid amount '{0}' for unit type '{1}' for 'Requires at least N units' requirement", amount, unitID)); + } } else {