Обработка ошибок

На этом занятии будет рассказано, как создать базовый код обработки ошибок для программ.

Даже в хорошо разработанных программах иногда возникают ошибки. Некоторые ошибки являются дефектами в коде, которые можно найти и исправить. Другие ошибки являются естественными следствием работы программы; например, программа может попытаться открыть файл, который уже используется. В подобных случаях ошибки можно спрогнозировать, но невозможно предотвратить. Задача прогнозирования этих ошибок и помощи программе справляться с ними ложится на программиста.

Ошибки во время выполнения

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

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

Блок Try...Catch...Finally

Блок Try...Catch...Finally можно использовать для обработки ошибок во время выполнения в коде. Вы можете Try сегмент кода — если исключение выдается этим кодом, управление переходит к блоку Catch, а затем выполняется код в блоке Catch. После завершения кода выполняется любой код в блоке Finally. Весь блок Try...Catch...Finally помещен в оператор End Try. В следующем примере показано, как используется каждый блок.

Try ' Code here attempts to do something.Catch ' If an error occurs, code here will run.Finally ' Code in this block will always run.End Try

Вначале выполняется код в блоке Try. Если он выполняется без ошибок, программа пропускает блок Catch и выполняет код в блоке Finally. Если же в блоке Try возникает ошибка, выполнение немедленно переходит к блоку Catch, и выполняется записанный там код; затем выполняется код в блоке Finally.

Практическое задание

Чтобы использовать блок Try...Catch

1. В меню Файл выберите команду Создать проект.

2. В диалоговом окне Создание проекта в области Шаблоны выберите Приложение Windows.

3. В поле Имя введите TryCatch и нажмите кнопку ОК.

Откроется новый проект Windows Forms.

4. Из Панели элементов перетащите один элемент управления TextBox и один элемент Button на форму.

5. Дважды щелкните элемент управления Button, чтобы открыть редактор кода.

6. В обработчик событий Button1_Click введите следующий код:

Try Dim aNumber As Double = CDbl(Textbox1.Text) MsgBox("You entered the number " & aNumber)Catch MsgBox("Please enter a number.")Finally MsgBox("Why not try it again?")End Try

7. Нажмите клавишу F5 для запуска программы.

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

9. Затем введите нечисловое значение в текстовом поле, например слово, и нажмите кнопку. На этот раз, когда программа пытается преобразовать текст поля в число, она не может это сделать, и возникает ошибка. Вместо завершения кода в блоке Try будет выполнен код в блоке Catch, и появится окно сообщения, предлагающее ввести число. Затем выполнится блок Finally, приглашающий повторить попытку.