在try块内停止调试时finally块是否会执行?

时间:2016-04-20 10:30:42

标签: c#

我在try块中打开数据库连接。如果我进入try块,然后停止调试,是否会执行finally块?换句话说,连接是否保持打开状态?

3 个答案:

答案 0 :(得分:3)

如果通过"停止调试"你的意思是当然不要停止应用程序(例如,在Visual Studio中按停止按钮停止当前的调试会话)。这是通过按F5按钮启动的控制台应用程序的典型情况。

如果通过"停止"你是说"分离"从当前正在运行的VS外部启动的应用程序(例如你用Ctrl + Alt + P附加的应用程序),程序将运行到它的结束,并将完成所有程序的编程。对于在IIS内部运行的任何Web应用程序(但不是IIS Express)也是如此。

答案 1 :(得分:1)

不,如果从调试器终止应用程序,则不会执行finally块。整个过程都被杀死了。实际上,这可能会导致无关的引用。 (如果你只是分离,它会继续运行)

但是连接不会保持打开状态。服务器迟早会断开连接。

答案 2 :(得分:1)

这取决于应用;如果它是Web应用程序,其余代码将执行,因为它可以从生成的.dll文件中访问。如果它是Windows应用程序,则不会执行finally块