我正在使用Activator.CreateInstance来实例化一个对象,如果对象的构造函数抛出异常,即使我在对Activator.CreateInstance的调用中使用了try/catch,Visual Studio似乎仍然将异常视为“用户未处理”的异常。请参见以下示例:
当从Visual Studio中以调试模式运行时,构造函数抛出异常时执行会停止。但是,如果我直接运行可执行文件(不在Visual Studio中),则输出两个WriteLine消息而不会停止执行。我的最佳猜测是Visual Studio无法确定该异常是否已处理,但我不确定原因。
附注:如果我选择在异常助手停止执行后“继续”执行,则程序将以预期的输出完成。
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无法确定该异常是否已处理,但我不确定原因。
附注:如果我选择在异常助手停止执行后“继续”执行,则程序将以预期的输出完成。
调试 > 异常
。 - oleksii