наконец, похоже, не выполняется в консольном приложении C # при использовании F5

int i=0;
try{
    int j = 10/i;
}
catch(IOException e){}
finally{
    Console.WriteLine("In finally");
    Console.ReadLine();
}

Кажется, что блок finally не выполняется при нажатии F5 в VS2008 . Я использую этот код в консольном приложении.

10
задан Mohammad Nadeem 30 September 2010 в 10:52
поделиться

5 ответов

Отладчик Visual Studio останавливает выполнение, когда вы получаете неперехваченное исключение (в данном случае исключение делится на ноль). В режиме отладки Visual Studio предпочитает прерывать выполнение и отображать всплывающее окно в источнике ошибки, а не допускать сбоя приложения. Это поможет вам найти неперехваченные ошибки и исправить их. Этого не произойдет, если вы отключите отладчик.

Попробуйте запустить его в режиме выпуска с консоли без подключенного отладчика, и вы увидите свое сообщение.

10
ответ дан 3 December 2019 в 23:48
поделиться

Если вы хотите, чтобы он выполнялся во время отладки, вы можете сделать две вещи:

1) Перехватить правильное исключение:


    int i = 0;
    try
    {
        int j = 10 / i;
    }
    catch(DivideByZeroException e){}
    finally
    {
        Console.WriteLine("In finally");
        Console.ReadLine();
    }

2) Указать Visual Studio игнорировать необработанные исключения. Перейдите в раздел «Отладка» -> «Исключения» и затем вы можете снять отметку с опции «Необработанные пользователем» Исключения среды CLR или развернуть этот узел и снять отметку с отдельных типов исключений.

2
ответ дан 3 December 2019 в 23:48
поделиться

В качестве окончательного вывода мы все должны согласиться с тем, что если есть необработанное исключение и приложение работает в режиме отладки, в конечном итоге оно не будет выполнено.

0
ответ дан 3 December 2019 в 23:48
поделиться

Не запускайте приложение через F5. В режиме отладки вы не можете пропустить исключение, окно сообщения будет всплывать снова и снова.

Вместо этого соберите его и запустите через CMD, Far Manager и т. Д.

0
ответ дан 3 December 2019 в 23:48
поделиться

F5 продолжает приложение до следующей точки останова или необработанного исключения.

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

1
ответ дан 3 December 2019 в 23:48
поделиться