int i=0;
try{
int j = 10/i;
}
catch(IOException e){}
finally{
Console.WriteLine("In finally");
Console.ReadLine();
}
在 VS2008 中按 F5 时,finally 块似乎没有执行。我在控制台应用程序中使用此代码。
int i=0;
try{
int j = 10/i;
}
catch(IOException e){}
finally{
Console.WriteLine("In finally");
Console.ReadLine();
}
在 VS2008 中按 F5 时,finally 块似乎没有执行。我在控制台应用程序中使用此代码。
当您遇到未捕获的异常(在本例中为除以零异常)时,Visual Studio 调试器会停止执行。在调试模式下,Visual Studio 更喜欢中断执行并在错误源处为您提供一个弹出框,而不是让应用程序崩溃。这是为了帮助您找到未捕获的错误并修复它们。如果您分离调试器,则不会发生这种情况。
尝试在没有附加调试器的情况下从控制台以发布模式运行它,您将看到您的消息。
如果您希望它在调试时执行,您可以做两件事:
1)捕捉正确的异常:
int i = 0;
try
{
int j = 10 / i;
}
catch(DivideByZeroException e){}
finally
{
Console.WriteLine("In finally");
Console.ReadLine();
}
2) 告诉 Visual Studio 忽略未处理的异常。转到 Debug-->Exceptions,然后您可以取消选中 Common Language Runtime Exceptions “User-unhandled” 选项,或者您可以展开该节点,并取消选中单个异常类型。
F5 继续应用程序直到下一个断点或未处理的异常。
我认为您应该使用 F10 而不是进行步骤调试或为所有异常(已处理或未处理)打开中断。
作为最后的结论我们都应该同意,如果有一个未处理的异常并且应用程序在调试模式下运行,最终将不会被执行。
不要通过 F5 运行您的应用程序。在调试模式下不能跳过异常,消息框会一次又一次地弹出。
而是通过 CMD、Far Manager 等构建并运行