在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 显示了这种差异,有人能解释为什么吗?