summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Framework/Serialisation
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-06-18 22:11:48 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-06-18 22:11:48 -0400
commitfb8fefea00aacd603e68fbdbaecd27e4c451cc82 (patch)
treec150ba4a34c596c44ccaba54931b2f85c817ab28 /src/StardewModdingAPI/Framework/Serialisation
parentb46776a4fbabe765b81751f8c4984cdd8a207419 (diff)
downloadSMAPI-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.cs12
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.");
}
}