diff --git a/Runtime/DIContainer.cs b/Runtime/DIContainer.cs index b701e58..17c1158 100644 --- a/Runtime/DIContainer.cs +++ b/Runtime/DIContainer.cs @@ -186,9 +186,22 @@ private async ValueTask InstantiateInternalAsync(Type targetType, object AfterInjectionProcessingScope.Begin(); var target = await ConstructorInjector.DoInject(targetType, args, scopedInstances); - var targetMethodsInfo = GetTargetMethodInfo(targetType); - var targetPropertiesInfo = GetTargetPropertyInfo(targetType); - var targetFieldsInfo = GetTargetFieldInfo(targetType); + + TargetMethodsInfo targetMethodsInfo; + TargetPropertiesInfo targetPropertiesInfo; + TargetFieldsInfo targetFieldsInfo; + try + { + targetMethodsInfo = GetTargetMethodInfo(targetType); + targetPropertiesInfo = GetTargetPropertyInfo(targetType); + targetFieldsInfo = GetTargetFieldInfo(targetType); + } + catch (Exception e) + { + InjectionProcessingScope.End(); + AfterInjectionProcessingScope.End(); + throw new FailedToInjectException(target, e); + } try { @@ -275,9 +288,21 @@ private async ValueTask InjectIntoInternalAsync(T target, object[] args, Scop AfterInjectionProcessingScope.Begin(); var targetType = target.GetType(); - var targetMethodsInfo = GetTargetMethodInfo(targetType); - var targetPropertiesInfo = GetTargetPropertyInfo(targetType); - var targetFieldsInfo = GetTargetFieldInfo(targetType); + TargetMethodsInfo targetMethodsInfo; + TargetPropertiesInfo targetPropertiesInfo; + TargetFieldsInfo targetFieldsInfo; + try + { + targetMethodsInfo = GetTargetMethodInfo(targetType); + targetPropertiesInfo = GetTargetPropertyInfo(targetType); + targetFieldsInfo = GetTargetFieldInfo(targetType); + } + catch (Exception e) + { + InjectionProcessingScope.End(); + AfterInjectionProcessingScope.End(); + throw new FailedToInjectException(target, e); + } try {