diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-06-18 22:11:48 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-06-18 22:11:48 -0400 |
commit | fb8fefea00aacd603e68fbdbaecd27e4c451cc82 (patch) | |
tree | c150ba4a34c596c44ccaba54931b2f85c817ab28 /src/StardewModdingAPI/Framework/Serialisation | |
parent | b46776a4fbabe765b81751f8c4984cdd8a207419 (diff) | |
download | SMAPI-fb8fefea00aacd603e68fbdbaecd27e4c451cc82.tar.gz SMAPI-fb8fefea00aacd603e68fbdbaecd27e4c451cc82.tar.bz2 SMAPI-fb8fefea00aacd603e68fbdbaecd27e4c451cc82.zip |
show friendly error when parsing a manifest version fails (#308)
Diffstat (limited to 'src/StardewModdingAPI/Framework/Serialisation')
-rw-r--r-- | src/StardewModdingAPI/Framework/Serialisation/ManifestFieldConverter.cs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/StardewModdingAPI/Framework/Serialisation/ManifestFieldConverter.cs b/src/StardewModdingAPI/Framework/Serialisation/ManifestFieldConverter.cs index 7a59f134..e6d62d50 100644 --- a/src/StardewModdingAPI/Framework/Serialisation/ManifestFieldConverter.cs +++ b/src/StardewModdingAPI/Framework/Serialisation/ManifestFieldConverter.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using StardewModdingAPI.Framework.Exceptions; using StardewModdingAPI.Framework.Models; namespace StardewModdingAPI.Framework.Serialisation @@ -50,10 +51,17 @@ namespace StardewModdingAPI.Framework.Serialisation } case JTokenType.String: - return new SemanticVersion(token.Value<string>()); + { + string str = token.Value<string>(); + if (string.IsNullOrWhiteSpace(str)) + return null; + if (!SemanticVersion.TryParse(str, out ISemanticVersion version)) + throw new SParseException($"Can't parse semantic version from invalid value '{str}', should be formatted like 1.2, 1.2.30, or 1.2.30-beta."); + return version; + } default: - throw new FormatException($"Can't parse {token.Type} token as a semantic version, must be an object or string."); + throw new SParseException($"Can't parse semantic version from {token.Type}, must be an object or string."); } } |