Пример из MSDN не работает - попробуй / наконец - PullRequest
0 голосов
/ 11 февраля 2011

Я читал о try / finally на MSDN и обнаружил следующий код. Говорят, что он будет запускать предложение, но когда я его запускаю, он просто не продолжается и не запускается. В чем проблема?

 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 ]

3 голосов
/ 11 февраля 2011

выглядит хорошо для меня. Он действительно запустит блок finally. Я предполагаю, что отладчик открывает диалоговое окно для вас, и вы не можете заставить выполнение продолжить.

Запустите его не под отладчиком - это предотвратит отладчик, который попытается «помочь» вам.

2 голосов
/ 11 февраля 2011

Вы уверены, что окно не закрывается так быстро, что вы этого не замечаете?

Вставьте 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();
            }
        }
    }
0 голосов
/ 11 февраля 2011

Просто чтобы расширить ответ Джона Скита, отладчик не появится, если вы поймаете исключение.

try {
    i = (int)o;
}
catch(InvalidCastException e) {}
finally {
    Console.Write("i = {o}",i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...