在使用F5时,最终似乎没有在C#控制台应用程序中执行

int i=0; try{ int j = 10/i; } catch(IOException e){} finally{ Console.WriteLine("In finally"); Console.ReadLine(); } 

在VS2008中按F5时,似乎不执行finally块。 我在控制台应用程序中使用此代码。

当您获得未捕获的exception时(在这种情况下为除零exception),Visual Studio调试器会暂停执行。 在调试模式下,Visual Studio更喜欢中断执行并在错误源处为您提供一个弹出框,而不是让应用程序崩溃。 这是为了帮助您找到未捕获的错误并修复它们。 如果分离调试器,则不会发生这种情况。

尝试从控制台以释放模式运行它而不连接调试器,您将看到您的消息。

如果您希望在调试时执行它,您可以执行以下两项操作:

1)抓住正确的例外:

 int i = 0; try { int j = 10 / i; } catch(DivideByZeroException e){} finally { Console.WriteLine("In finally"); Console.ReadLine(); }
int i = 0; try { int j = 10 / i; } catch(DivideByZeroException e){} finally { Console.WriteLine("In finally"); Console.ReadLine(); } 

2)告诉Visual Studio忽略未处理的exception。 转到Debug – > Exceptions,然后可以取消选中Common Language Runtime Exceptions“User-unhandled”选项,或者可以展开该节点,并取消选中各个exception类型。

F5继续应用程序,直到下一个断点或未处理的exception。

我认为您应该使用F10而不是步骤调试或打开所有exception(处理与否)。

不要通过F5运行您的应用程序。 在调试模式下,您无法跳过exception,消息框将一次又一次弹出。

而是构建它并通过CMD,Far Manager等运行

作为最终结论,我们都应该同意,如果存在未处理的exception并且应用程序在调试模式下运行,则最终将不会执行。