当我从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会使用未处理的消息打破异常,有没有办法阻止它这样做?