Target Invocation Exception
时间: 2023-12-25 16:30:00 浏览: 89
TargetInvocationException是一个异常类,它是在.NET框架中使用的。当通过反射调用目标方法时,如果目标方法本身抛出了异常,但是由于反射调用的特性,异常会被包装在TargetInvocationException中抛出。
下面是一个示例代码,演示了如何使用反射调用目标方法,并处理可能抛出的TargetInvocationException异常:
```csharp
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod()
{
throw new Exception("This is an exception thrown from MyMethod.");
}
}
public class Program
{
public static void Main()
{
try
{
// 创建MyClass的实例
MyClass myObject = new MyClass();
// 获取MyMethod方法的MethodInfo对象
MethodInfo methodInfo = typeof(MyClass).GetMethod("MyMethod");
// 使用反射调用MyMethod方法
methodInfo.Invoke(myObject, null);
}
catch (TargetInvocationException ex)
{
// 获取原始异常
Exception innerException = ex.InnerException;
// 处理原始异常
Console.WriteLine("Caught exception: " + innerException.Message);
}
}
}
```
在上面的示例中,我们创建了一个名为MyClass的类,其中包含一个抛出异常的方法MyMethod。然后,我们使用反射获取MyMethod方法的MethodInfo对象,并使用Invoke方法调用该方法。如果MyMethod方法抛出异常,它会被包装在TargetInvocationException中,并在catch块中捕获和处理。
阅读全文