2

这个真的是在烤我的面条...

我有一些代码。当我运行它时,Visual Studio 抱怨一个未处理的异常。而且,果然,有一个例外。但是,它明显地在 try/catch 块内,所以......那是如何“未处理”的?

我四处搜索,我能找到的唯一相关命中与 LINQ 有关。但我没有使用任何 LINQ,所以不可能。

相关代码如下所示:

try
{
  method.Invoke(target, new object[0]);
}
catch (MyException e)
{
  Console.WriteLine(e);
}

Invoke()每次击中的方法都不一样。其中一些方法确实会引发异常——这很好。但这就是为什么我把它放在一个 try-block 中!我不明白为什么 VS 抱怨没有处理异常。

(是的,我已经检查过抛出的异常是一个MyException对象。)

在这一点上,我唯一的猜测是它与使用反射有关。我真的需要解决这个问题......有什么建议吗?

4

1 回答 1

4

您应该阅读MethodInfo.Invoke.

例外

TargetInvocationException - 调用的方法或构造函数引发异常。

评论

如果调用的方法抛出异常,则该Exception.GetBaseException方法返回异常。

您的异常被包裹在一个TargetInvocationException.

于 2013-07-24T11:25:45.307 回答