MethodInfo.Invokeメソッドによって呼び出したメソッドが例外をスローした場合、TargetInvocationExceptionがスローされます。 呼び出したメソッド内で発生した例外はTargetInvocationExceptionにラップされるため、実際にメソッドがスローした例外はInnerExceptionプロパティを参照することで取得することができます。

MethodInfoでのメソッド呼び出しでメソッドがスローした例外をキャッチする
using System;
using System.Reflection;

class C {
  public void M()
  {
    throw new NotImplementedException();
  }
}

class Sample {
  static void Main()
  {
    Type t = typeof(C);

    object inst = Activator.CreateInstance(t);

    MethodInfo m = t.GetMethod("M");

    try {
      m.Invoke(inst, null);
    }
    // 呼び出したメソッドで例外が発生した場合、TargetInvocationExceptionがスローされる
    catch (TargetInvocationException ex) {
      // メソッドがスローした例外を取得する
      Console.WriteLine(ex.InnerException);
    }
  }
}
実行結果
System.NotImplementedException: メソッドまたは操作は実装されていません。
   場所 C.M()

PropertyInfo.GetValue/SetValueおよびConstructorInfo.Invokeによってプロパティ・コンストラクタを呼び出した結果例外が発生した場合も、同様にTargetInvocationExceptionがスローされます。