Skip to content

Different exception is thrown in newer version. Is this a bug or a design decision? #212

Open
@SerhatAkkus87

Description

@SerhatAkkus87

Hello,

I have some code which used Unity 5.8.6. When a resolution of a class failed, it used to throw a Unity.Exceptions.ResolutionFailedException.

In Unity 5.11.1, it throws a System.Reflection.TargetInvocationException now. Is this a design decision or a bug?

Example:
The following code registers a class, which throws an exception in the constructor:

using System.Reflection;
using Unity;

namespace UnityNewException
{
    class Program
    {
        static void Main(string[] args)
        {
            UnityContainer container = new UnityContainer();
            container.RegisterType<ITestClass, TestClass>();
            try
            {
                // The implementation should throw an exception in the constructor.
                var config = container.Resolve<ITestClass>();
            }
            // Thrown in Unity 5.8.6
            catch (ResolutionFailedException e)
            {
                System.Console.WriteLine("Exception = " + e.GetType());
                System.Console.WriteLine("Inner exception = " + e.InnerException.GetType());
            }
            // Thrown in Unity 5.11.1
            catch (TargetInvocationException e)
            {
                System.Console.WriteLine("Exception = " + e.GetType());
                System.Console.WriteLine("Inner exception = " + e.InnerException.GetType());
            }
            System.Console.ReadKey();  
        }
    }
}

Is there any difference between ResolutionFailedException and TargetInvocationException? Is ResolutionFailedException outdated or is this a bug?

Thanks.

Metadata

Metadata

Assignees

Labels

masterIssue has been merged into ‘master’

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions