为什么在Activator.CreateInstance范围内的调试器中以用户未处理的方式捕获异常?

时间:2015-11-12 17:23:26

标签: c# visual-studio visual-studio-2013 exception-handling

当我从Activator.CreateInstance实例化一个从它的构造函数抛出异常的类时,我在Visual Studio 2013中遇到了一些奇怪的行为。我的实际情况是,我有一个依赖于第三方库的MEF组件,如果这些库不可用,则会抛出。

我重建了一个更简单的重复方案如下:

考虑班级

class FailType
{
    public FailType()
    {
        throw new Exception();
    }
}

然后是代码

try
{
    var instance = Activator.CreateInstance(typeof(FailType));
}
catch (Exception)
{ }

忽略了repro代码的明显无意义的性质,Visual Studio调试器将在FailType构造函数中抛出异常,并声称它是用户未处理的 - 即使它&# 39;在调用代码的上下文中清楚地处理。

我想知道它是否与作为Activator.CreateInstance内部组成部分的托管到本机转换有关。这是在.NET 4.5上,它的价值。

所以,问题是 - 为什么Visual Studio会使用未处理的消息打破异常,有没有办法阻止它这样做?

0 个答案:

没有答案