异常不会从c#中的反射方法调用传播

Luc*_*ina 8 c# reflection visual-studio

通过methodInfo.Invoke调用方法时,如果抛出异常,它似乎不会传播到我的catch块.

object value;
try
{
    value = myMethod.Invoke(null, parameters);//program crashes with uncaught exception
}
catch
{
    throw new Exception("Caught!");//never executed
}
Run Code Online (Sandbox Code Playgroud)

这个方法引发的特殊例外是KeyNotFoundException,但这应该不重要,因为我抓住了一切正确的东西

我从Visual Studio获得的特定错误消息是

KeyNotFoundException was unhandled by user code
Run Code Online (Sandbox Code Playgroud)

而通常消息会说

KeyNotFoundException was unhandled
Run Code Online (Sandbox Code Playgroud)

如果调用不是反射调用.

我可以让方法检查它们是否在那里,如果没有返回null,但是使用异常处理似乎更可取.有没有办法从反射方法调用中传播异常?

小智 3

这也可能是 Visual Studio 调试器的问题。正如此处类似问题的已接受答案中所述,您可以采取一些解决方法。最简单的方法是更改​​ Visual Studio 调试器以关闭“工具”->“选项”->“调试”->“常规”中的“仅我的代码”。您还可以将其包装在委托中或显式尝试捕获调用异常并检查其内部异常,这应该是您的 KeyNotFoundException。

  • 最后一个 - 如果它不会“catch {}”,那么它也不会“catch(TargetInitationException) {}” (2认同)