C# MSDN中的示例不起作用-try/finally

C# MSDN中的示例不起作用-try/finally,c#,exception-handling,C#,Exception Handling,我一直在阅读有关MSDN上的try/finally的内容,并发现了以下代码。他们说它将运行Finally子句,但当我运行它时,它不会继续运行,也不会运行它。有什么问题 public class TestTryFinally { public static void Main() { int i = 123; string s = "Some string"; object o = s

我一直在阅读有关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);
            }
        }
    }

我觉得不错。它确实将运行finally块。我猜调试器正在为您弹出一个对话框,而您没有设法强制执行继续


不要在调试器下运行它-这将避免调试器在试图“帮助”您时碍事。

在我看来很好。它确实将运行finally块。我猜调试器正在为您弹出一个对话框,而您没有设法强制执行继续


不要在调试器下运行它-这将避免调试器在试图“帮助”您时妨碍您。

您确定窗口关闭的速度不会太快以至于您没有注意到吗

放入一个readline使其等待:

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();
            }
        }
    }

你确定窗户关得太快以至于你没有注意到吗

放入一个readline使其等待:

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();
            }
        }
    }

仅扩展Jon Skeet的答案,如果捕获到异常,调试器将不会弹出

try {
    i = (int)o;
}
catch(InvalidCastException e) {}
finally {
    Console.Write("i = {o}",i);
}

仅扩展Jon Skeet的答案,如果捕获到异常,调试器将不会弹出

try {
    i = (int)o;
}
catch(InvalidCastException e) {}
finally {
    Console.Write("i = {o}",i);
}

你能解释一下“弹出”是什么吗?西蒙:他指的是异常弹出。你能解释一下“弹出”是什么吗?西蒙:他指的是异常弹出。