MSDN中的示例不起作用 - 尝试/最后

时间:2011-02-11 13:57:30

标签: c# exception-handling

我一直在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);
            }
        }
    }

3 个答案:

答案 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);
}