我一直在MSDN上阅读有关try / finally的内容并找到以下代码。他们说它将运行Finally子句但是当我运行它时,它只是不继续并且不运行它。有什么问题?
public class TestTryFinally
{
public static void Main()
{
int i = 123;
string s = "Some string";
object o = s;
try
{
// Invalid conversion; o contains a string not an int
i = (int)o;
}
finally
{
Console.Write("i = {0}", i);
}
}
}
答案 0 :(得分:3)
对我来说很好看。它确实会运行finally块。我的猜测是,调试器会为你弹出一个对话框,而你却没有设法强制继续执行。
不要在调试器下运行它 - 这样可以避免调试器在试图“帮助”你时阻碍它。
答案 1 :(得分:2)
您确定窗口没有快速关闭而您没有注意到吗?
放入一条读取线让它等待:
public class TestTryFinally
{
public static void Main()
{
int i = 123;
string s = "Some string";
object o = s;
try
{
// Invalid conversion; o contains a string not an int
i = (int)o;
}
finally
{
Console.Write("i = {0}", i);
Console.Write("Press Enter to continue.");
Console.ReadLine();
}
}
}
答案 2 :(得分:0)
为了扩展Jon Skeet的答案,如果你发现异常,调试器就不会弹出。
try {
i = (int)o;
}
catch(InvalidCastException e) {}
finally {
Console.Write("i = {o}",i);
}