我使用Activator.CreateInstance来实例化一个对象,并且我发现如果对象的构造函数抛出一个异常,Visual Studio似乎将该异常视为"用户未处理& #34;即使我在try / catch中包含对Activator.CreateInstance的调用。请参阅以下示例:
class NumberDisliker
{
public NumberDisliker(int number)
{
throw new Exception(string.Format("{0}? I dislike {0}.", number));
}
}
class Program
{
static void Main(string[] args)
{
try
{
var blah = new NumberDisliker(5);
}
catch
{
Console.WriteLine("Caught using 'new'.");
}
try
{
var blah = Activator.CreateInstance(typeof(NumberDisliker), 5);
}
catch
{
Console.WriteLine("Caught using Activator.CreateInstance");
}
Console.ReadKey();
}
从Visual Studio以调试模式运行时,在构造函数中抛出异常时停止执行。但是,当我直接运行可执行文件(从Visual Studio中)时,它会按预期输出两个WriteLine消息,而不会停止执行。我最好的猜测是,Visual Studio无法确定是否处理了异常,但我不确定原因。
编辑:作为附录,如果我选择"继续"在异常助手停止后执行,程序以预期的输出结束。
答案 0 :(得分:3)
在调试下查看visual studio选项页面。
有一个名为
的选项当异常跨越AppDomain或托管/本机边界时中断,这可以在使用反射调用时生效。 (上述链接中本节下的第3点)
答案 1 :(得分:0)
检查setting Debug > Exceptions
,您可以在哪里设置哪些例外可以中断执行