0

在dotnet框架或mono框架中,通过反射调用方法,调用过程中的异常会被TargetInvocationException包裹。但是我发现OverFlowException在单声道中表现出不同的行为,它直接抛出而没有任何包装,这是单声道框架的错误吗?

示例代码:

public class Demo
{
   private void Test()
   {
      throw new OverflowException();
   }
}

class Program
{
   static void Main(string[] args)
   {
       Demo demo = new Demo();
       MethodInfo method = typeof(Demo).GetMethod("Test",BindingFlags.Instance | BindingFlags.NonPublick);
       
       try
       {
          method.Invoke(demo,new object[0]);
       }
       catch(OverflowException)
       {
          //for mono framework, throws OverflowException
       }
       cathc(TargetInvocationException)
       {
          //for dotnet framework, throws TargetInvocationException
       }
   }
}

相同的代码,在 mono 和 dotnet 中执行不同,只有 OverflowException 显示了这种差异,有人能解释为什么吗?

4

0 回答 0