请考虑以下代码C#代码."finally"块是否执行?
public void DoesThisExecute() {
string ext = "xlsx";
string message = string.Empty;
try {
switch (ext) {
case "xls": message = "Great choice!"; break;
case "csv": message = "Better choice!"; break;
case "exe": message = "Do not try to break me!"; break;
default:
message = "You will not win!";
return;
}
}
catch (Exception) {
// Handle an exception.
}
finally {
MessageBox.Show(message);
}
}
Run Code Online (Sandbox Code Playgroud)
哈,在我写完这篇文章之后,我意识到我本可以在Visual Studio中自己测试过.但是,请随时回答!
语法将从语言变为语言,但这是一个普遍的问题.
这有什么区别....
try
{
Console.WriteLine("Executing the try statement.");
throw new NullReferenceException();
}
catch (NullReferenceException e)
{
Console.WriteLine("{0} Caught exception #1.", e);
}
finally
{
Console.WriteLine("Executing finally block.");
}
Run Code Online (Sandbox Code Playgroud)
还有这个....
try
{
Console.WriteLine("Executing the try statement.");
throw new NullReferenceException();
}
catch (NullReferenceException e)
{
Console.WriteLine("{0} Caught exception #1.", e);
}
Console.WriteLine("Executing finally block.");
Run Code Online (Sandbox Code Playgroud)
我一直看到它被使用,所以我认为有一个很好的理由最终使用,但我无法弄清楚它是如何只是在声明之后放置代码,因为它仍然会运行.
有没有最终没有运行的场景?
好吧,我已经阅读(并了解到)finally块并不总是执行其代码(甚至除了拔插头之外).
仅供参考.有关更多信息,请参阅try catch finally问题
但是,我没有找到:
当我停止调试器时,我的finally块是否会被执行?
谢谢!
在我的应用程序中,首先向用户显示登录屏幕,登录后显示的表单具有菜单栏.在该菜单栏上有两个项目:"注销"和"退出".如果用户选择注销选项,我希望它返回上述登录屏幕.如果用户决定单击"退出",我会提示用户是否确定要退出.不幸的是,当用户通过单击窗口上的"X"按钮决定关闭程序时,它仅关闭当前表单.我的意图是关闭整个应用程序.
基本上,我需要知道如何通过拦截表单关闭事件来退出当前应用程序.
在注销项目条带代码是:
private void logoutToolStripMenuItem_Click(object sender, EventArgs e)
{
Form_Login log = new Form_Login();
this.Close();
log.Show();
}
Run Code Online (Sandbox Code Playgroud)
在退出项目下条形码是:
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are You Sure To Exit Programme ?","Exit",MessageBoxButtons.OKCancel)== DialogResult.OK)
{
Application.Exit();
}
}
Run Code Online (Sandbox Code Playgroud)
当我单击退出按钮它关闭当前表单,我想关闭整个应用程序
可能重复:
尝试抓住最后的问题
如果未捕获异常,则执行代码语句
try
{
throw new Exception("test example");
}
finally
{
Console.WriteLine("finally block");
}
Run Code Online (Sandbox Code Playgroud)