Browse Source

Improved error handling with new features

pull/53/head
Anairkoen Schno 4 years ago
parent
commit
a88ca4bb18
Signed by: DaNike GPG Key ID: BEFB74D5F3FC4387
2 changed files with 20 additions and 6 deletions
  1. +8
    -2
      IPA.Loader/Loader/Features/Feature.cs
  2. +12
    -4
      IPA.Loader/Loader/PluginLoader.cs

+ 8
- 2
IPA.Loader/Loader/Features/Feature.cs View File

@ -106,6 +106,10 @@ namespace IPA.Loader.Features
if (definingPlugin != declarer) if (definingPlugin != declarer)
return false; return false;
} }
else
{
featureDelcarers.Add(name, definingPlugin);
}
featureTypes.Add(name, type); featureTypes.Add(name, type);
return true; return true;
@ -144,11 +148,13 @@ namespace IPA.Loader.Features
// returns whether or not Initialize returned true, feature is always set when the thing exists // returns whether or not Initialize returned true, feature is always set when the thing exists
public bool TryCreate(out Feature feature) public bool TryCreate(out Feature feature)
{ {
feature = null;
if (type == null) if (type == null)
{ {
if (!featureTypes.TryGetValue(Name, out type)) if (!featureTypes.TryGetValue(Name, out type))
{
feature = new EmptyFeature() { InvalidMessage = "No such feature type found", FeatureName = Name };
return false; return false;
}
} }
bool result; bool result;
@ -162,7 +168,7 @@ namespace IPA.Loader.Features
catch (Exception e) catch (Exception e)
{ {
result = false; result = false;
feature = new EmptyFeature() { InvalidMessage = e.ToString() };
feature = new EmptyFeature() { InvalidMessage = e.ToString(), FeatureName = Name };
} }
return result; return result;
} }


+ 12
- 4
IPA.Loader/Loader/PluginLoader.cs View File

@ -878,11 +878,19 @@ namespace IPA.Loader
var loaded = new HashSet<PluginMetadata>(); var loaded = new HashSet<PluginMetadata>();
foreach (var meta in PluginsMetadata) foreach (var meta in PluginsMetadata)
{ {
var exec = InitPlugin(meta, loaded);
if (exec != null)
try
{
var exec = InitPlugin(meta, loaded);
if (exec != null)
{
list.Add(exec);
loaded.Add(meta);
}
}
catch (Exception e)
{ {
list.Add(exec);
loaded.Add(meta);
Logger.log.Critical($"Uncaught exception while loading pluign {meta.Name}:");
Logger.log.Critical(e);
} }
} }


Loading…
Cancel
Save