Поделиться через


Что делать, если что-то идет не так. Обработка ошибок

Обновлен: Ноябрь 2007

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

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

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

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

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

Блок 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, приглашающий повторить попытку.

Следующие действия

В этом уроке были рассмотрены способы использования блоков Try...Catch...Finally для создания основной структуры обработки ошибок. Это занятие завершает введение в язык Visual Basic. В следующей последовательности уроков будет рассказано, как создавать пользовательский интерфейс для программ.

Следующее занятие: Создание внешнего вида программы. Введение в Windows Forms

См. также

Задачи

Программный выбор между двумя возможностями. Оператор If... Then

Знайте свои ошибки. Три типа ошибок в программировании

Ссылки

Оператор Try... Catch... Finally (Visual Basic)

Другие ресурсы

Структурная обработка исключений в Visual Basic