Слайд 2Try...Catch...Finally
Try - В этот раздел помещается фрагмент программы, который может
вызвать исключение
Catch - Текст, помещенный в этот раздел, выполняется только
при возникновении исключения.
Finally - Текст внутри этого раздела выполняется после выполнения текста в разделе Try и/или разделе Catch. Обычно в этот раздел помещаются операторы, выполняющие высвобождение ресурсов, т.е. текст, который должен выполниться всегда, независимо от того, возникало ли исключение
Слайд 3Try...Catch...Finally
Выполнился фрагмент, включенный в раздел Try.
2. Так как не возникло
никаких исключений, текст раздела Catch не выполнялся.
3. После окончания выполнения
операторов в разделе Try выполнился текст раздела Finally.
4. После выполнения всех операторов в разделе Finally управление было передано оператору, следующему за End Try.
Слайд 4Работа с исключениями
Оператор Catch дает возможность определить переменную, содержащую ссылку
на объект исключения.
Используя этот объект, можно получить информацию об исключении.
Catch
objException As Exception - обрабатывает почти все исключения
Слайд 5Пример:
Dim intAnswer As Long
Try
LngAnswer=100/Clng(txtInput.Text)
MsgBox ("100 / " & txtlnput.Text
& " is " & lngAnswer)
Catch objException As System.OverflowException
MsgBox(«введите что-нибудь
в textbox")
Catch objException As Exception
MsgBox(“перехват других исключений")
End Try
Слайд 6Объект Err
Err - это специальный объект Visual Basic, в котором при
каждом возникновении ошибки времени исполнения сохраняется подробная информация по этой
ошибке.
Свойства объекта Err:
Err.Number содержит номер самой последней из ошибок времени исполнения,
Err.Description содержит краткое сообщение об этой ошибке.
Err.Clear этот метод стирает информацию о предыдущей ошибке
Err.Raise генерирует ошибку
Слайд 7Перечень ошибок времени исполнения
Слайд 8генерация - исключений
Try
Err.Raise(61) ' генерируем ошибку Disk Full
Catch
When Err.Number = 61
MsgBox("Ошибка: Диск переполнен")
End Try
Слайд 9Рекомендации по использованию исключений
Исключение является признаком аварийной ситуации; не используйте
исключения для простой передачи информации.
Не заменяйте тривиальные проверки обработкой исключений.
Например, исключения не стоит применять для проверки достижения конца файла (EOF).
Избегайте раздробленной обработки исключений, при которой едва ли не каждая команда заключается в отдельный блок Try-Catch.
Не поглощайте исключения конструкциями вида Catch e As Exception с пустым блоком команд, если для этого нет достаточно веских причин. Если в программе произошло исключение, обработайте его или передайте для дальнейшей обработки.
Передавая исключение во внешний код для последующей обработки, добавьте в него новую информацию (или определите новый класс исключений), чтобы внешний код мог точно определить, что произошло и какие меры были приняты для того, чтобы исправить ситуацию.
Слайд 10Диалоговые окна
Окно сообщений Msgbox
Окно ввода данных Inputbox
Диалоговые окна
Слайд 11Взаимодействие с пользователем
Отображение сообщений с помощью функции MsgBox ()
Синтаксис: MsgBox(promt,
[buttons], [title])
Promt — это текст, который будет отображаться в окне
сообщения,
buttons определяет, какие будут кнопки в окне и какая пиктограмма,
t i t l e — что будет написано в заголовке окна.
Класс MessageBox.show(promt,[title,buttons,icon,defaultButton,option])
defaultButton- какая кнопка активна
Option – расположение текста в окне
Слайд 14Обработка нажатия кнопки
Выполнение программой определенных действий, в зависимости от того,
какая была нажата кнопка, основано на использовании одной из логических
конструкций выбора. Например:
If MsgBox("Хотите выполнить действия X?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question) = MsgBoxResult.Yes Then
' выполнение Х происходит здесь’
End I f
Слайд 15Обработка нажатия кнопки
Обработка запроса на подтверждение
(при нажатии кнопки ВЫХОД)
If MessageBox.Show("закрыть?",
"close", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign) = DialogResult.OK Then Me.Close()
End if
Слайд 16Событие нажатия кнопки «закрыть»
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal
e As System.Windows.Forms. FormClosingEventArgs) Handles Me.FormClosing
e.Cancel = True
If MsgBox("закрыть?") =
MsgBoxResult.Ok Then _ e.Cancel = False
End Sub
Слайд 17Диалоговые окна
определить результат диалога для одной или нескольких кнопок, т.
е. что должно произойти при нажатии той или иной кнопки.
указать,
каким образом вызывается форма (ShowDialog).
форма будет отображена модально
если пользователь щелкает по кнопке, у которой свойство DialogResult выставлено на возвращение некоторой величины, то форма сразу же закрывается, а возвращенная величина считается результатом вызова ShowDialog
Слайд 18Пример
Dim objDialBox As New formdial()
If ObjDialBox.ShowDialog=DialogResult.OK Then
MsgBox("You clicked ОК.")
Else
MsgBox(«You
clicked Cancel.")
End If
objCustomDialogBox = Nothing
Слайд 19Ввод данных
создать форму с управляющими средствами для перехвата данных;
использовать функцию
InputBox () для получения данных от пользователя.
InputBox(promt, [ title ]
, [defaultresponce])
defaultresponce текст, который будет появляться в окне ввода по умолчанию.
strResult = InputBox("How many eggs do you want to order?", "Order eggs", "12")
Слайд 20События клавиатуры
KeyDown - Происходит при нажатии клавиши,
Keypress - Происходит
при нажатии клавиши (нажать и отпустить),
KeyUp - Происходит, если
отпустить нажатую клавишу
В событиях клавиатуры параметр е содержит данные о том, какая была нажата клавиша.
Информацию о том, какая была нажата клавиша, можно узнать из свойств KeyChar параметра е.
Слайд 21Примеры
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.A Then Label1.BackColor =
Color.Blue
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
a = Label1.Left
If e.KeyChar = "d" Then a = a + 10
Label1.Left = a
End Sub
Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.B Then Label1.Text = "hhjhj"
End Sub
Слайд 22Примеры
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
Handles Me.KeyPress
a = Label1.Left
If e.KeyChar = "d" Then a = a + 10
Label1.Left = a
If e.KeyChar = "k" Then
e.Handled = True
Label1.BackColor = Color.Brown
End If
End Sub
Слайд 23Пример
Когда Handled имеет значение TRUE, то Visual Basic пропускает
данное нажатие клавиши.
перехватывает ввод всех букв "К", независимо от их
регистра:
If e.KeyChar.ToLower(e.KeyChar) = "k" Then e.Handled = True
End If
Слайд 25Перетаскивание объекта
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As
System.Windows.Forms. MouseEventArgs) Handles Me.MouseMove
If e.Button =
MouseButtons.Right Then
Label1.Left = e.X
Label1.Top = e.Y
End If
End Sub