powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не срабатывает On Error GoTo
6 сообщений из 6, страница 1 из 1
Не срабатывает On Error GoTo
    #38766667
Дмитрий П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

В программе на VB6 я хочу чтобы, когда случалось деление на ноль, пропускались некоторые операторы. Почему в след.коде первый обработчик ошибок (метка AA) срабатывает, а на второй (метка BB) - нет. Вместо этого возникает сообщение VB6 о делении на ноль.
Получается что «On Error GoTo BB» не срабатывает!
Почему?

Спасибо


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim a As Single, b As Single, c As Single, d As Single
a = 1
b = 0
On Error GoTo AA
a = a / b
Debug.Print a
AA:
On Error GoTo 0

c = 1
d = 0
On Error GoTo BB
c = c / d
Debug.Print a
BB:
On Error GoTo 0
...
Рейтинг: 0 / 0
Не срабатывает On Error GoTo
    #38766690
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте хелп по использованию On Error
обработка исключения должна заканчиваться Resume
ошибка внутри обработчика ошибок обрабатываться не будет
...
Рейтинг: 0 / 0
Не срабатывает On Error GoTo
    #38766719
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proошибка внутри обработчика ошибок обрабатываться не будетБудет, если сделать On Error Goto -1
...
Рейтинг: 0 / 0
Не срабатывает On Error GoTo
    #38766733
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyShocker.Proошибка внутри обработчика ошибок обрабатываться не будетБудет, если сделать On Error Goto -1я имею ввиду в коде автора. Но это уже извращение, нужно либо сделать нормальный обработчик ошибок с возвратом, либо:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim a As Single, b As Single, c As Single, d As Single
a = 1
b = 0
On Error Resume Next
a = a / b
If Err = 0 Then Debug.Print a
On Error GoTo 0

c = 1
d = 0
On Error Resume Next
c = c / d
If Err = 0 Then Debug.Print a
On Error GoTo 0
...
Рейтинг: 0 / 0
Не срабатывает On Error GoTo
    #38767092
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий П.,

Попробуйте своё деление вынести в отдельную функцию, и тогда хоть 100 раз...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub Кнопка0_Click()
Dim a As Single, b As Single, c As Single, d As Single
a = 1
b = 0
a = Delenie_na_nol(a, b)
If a = 0 Then MsgBox "Было деление на ноль!"
c = 1
d = 0
c = Delenie_na_nol(c, d)
If c = 0 Then MsgBox "Ещё раз было деление на ноль!"
End Sub

' ***********************************************

Public Function Delenie_na_nol(a1 As Single, b1 As Single) As Single
Delenie_na_nol = 0 'вернётся ноль, если было деление на ноль
On Error GoTo er1
Delenie_na_nol = a1 / b1
Exit Function
er1:
End Function
...
Рейтинг: 0 / 0
Не срабатывает On Error GoTo
    #38767094
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий П.,

Прошу прощения, в функции одну из строк нужно поставить в конец, а то может не сработать...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub Кнопка0_Click()
Dim a As Single, b As Single, c As Single, d As Single
a = 1
b = 0
a = Delenie_na_nol(a, b)
If a = 0 Then MsgBox "Было деление на ноль!"
c = 1
d = 0
c = Delenie_na_nol(c, d)
If c = 0 Then MsgBox "Ещё раз было деление на ноль!"
End Sub

' ***********************************************

Public Function Delenie_na_nol(a1 As Single, b1 As Single) As Single
'Delenie_na_nol = 0 'вернётся ноль, если было деление на ноль
On Error GoTo er1
Delenie_na_nol = a1 / b1
Exit Function
er1:
Delenie_na_nol = 0 'вернётся ноль, если было деление на ноль
End Function
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не срабатывает On Error GoTo
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]