int i=0;
try{
int j = 10/i;
}
catch(IOException e){}
finally{
Console.WriteLine("In finally");
Console.ReadLine();
}
Кажется, что блок finally не выполняется при нажатии F5 в VS2008 . Я использую этот код в консольном приложении.
Отладчик Visual Studio останавливает выполнение, когда вы получаете неперехваченное исключение (в данном случае исключение делится на ноль). В режиме отладки Visual Studio предпочитает прерывать выполнение и отображать всплывающее окно в источнике ошибки, а не допускать сбоя приложения. Это поможет вам найти неперехваченные ошибки и исправить их. Этого не произойдет, если вы отключите отладчик.
Попробуйте запустить его в режиме выпуска с консоли без подключенного отладчика, и вы увидите свое сообщение.
Если вы хотите, чтобы он выполнялся во время отладки, вы можете сделать две вещи:
1) Перехватить правильное исключение:
int i = 0;
try
{
int j = 10 / i;
}
catch(DivideByZeroException e){}
finally
{
Console.WriteLine("In finally");
Console.ReadLine();
}
2) Указать Visual Studio игнорировать необработанные исключения. Перейдите в раздел «Отладка» -> «Исключения» и затем вы можете снять отметку с опции «Необработанные пользователем» Исключения среды CLR или развернуть этот узел и снять отметку с отдельных типов исключений.
В качестве окончательного вывода мы все должны согласиться с тем, что если есть необработанное исключение и приложение работает в режиме отладки, в конечном итоге оно не будет выполнено.
Не запускайте приложение через F5. В режиме отладки вы не можете пропустить исключение, окно сообщения будет всплывать снова и снова.
Вместо этого соберите его и запустите через CMD, Far Manager и т. Д.
F5 продолжает приложение до следующей точки останова или необработанного исключения.
Я думаю, вам лучше использовать F10 для пошаговой отладки или включить прерывание для всех исключений (обработанных или нет).