aboutsummaryrefslogtreecommitdiff
path: root/lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs')
-rw-r--r--lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs b/lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs
index c62dff9..4ffb3a1 100644
--- a/lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs
+++ b/lib/VNLib.Plugins.Extensions.Loading/src/LoadingExtensions.cs
@@ -657,9 +657,15 @@ namespace VNLib.Plugins.Extensions.Loading
}
catch(TargetInvocationException te) when (te.InnerException != null)
{
+ FindNestedConfigurationException(te);
FindAndThrowInnerException(te);
throw;
}
+ catch(Exception ex)
+ {
+ FindNestedConfigurationException(ex);
+ throw;
+ }
Task? loading = null;
@@ -755,6 +761,21 @@ namespace VNLib.Plugins.Extensions.Loading
}
}
+ internal static void FindNestedConfigurationException(Exception ex)
+ {
+ if(ex is ConfigurationException ce)
+ {
+ ExceptionDispatchInfo.Throw(ce);
+ }
+
+ //Recurse
+ if(ex.InnerException is not null)
+ {
+ FindNestedConfigurationException(ex.InnerException);
+ }
+
+ //No more exceptions
+ }
private sealed class PluginLocalCache
{