powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB обработка ошибок
12 сообщений из 12, страница 1 из 1
VB обработка ошибок
    #33438399
ll13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как реализовать следующую схему :
Процедура
========

Оператор А1
Оператор А2
Оператор А3
ВыходИзПроцедуры
Если произошла любая ошибка при выполнении А1 или А2 или А3 то выполнить
Оператор Б1
Оператор Б2
Оператор Б3
ВыходИзПроцедуры
Если произошла любая ошибка при выполнении Б1 или Б2 или Б3 то выполнить
Оператор С1
Оператор С2
Оператор С3
ВыходИзПроцедуры

КонецПроцедуры
=============
...
Рейтинг: 0 / 0
VB обработка ошибок
    #33438601
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On Error GoTo метка
...
Рейтинг: 0 / 0
VB обработка ошибок
    #33438979
ll13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Процедура
========
On Error GoTo метка1
Оператор А1
Оператор А2
Оператор А3
ВыходИзПроцедуры
метка1 :
On Error GoTo метка2
Оператор Б1
Оператор Б2
Оператор Б3
ВыходИзПроцедуры
Метка2 :
Оператор С1
Оператор С2
Оператор С3
ВыходИзПроцедуры

КонецПроцедуры
=============

Почему не работает ?
...
Рейтинг: 0 / 0
VB обработка ошибок
    #33439092
tunder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
On Error Resume Next
On Error GoTo 0

On Error Resume Next
Err.Raise 6 ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear ' Clear the error.
...
Рейтинг: 0 / 0
VB обработка ошибок
    #33440160
При возникноваении ошибки VB начинает выполнять код обработки ошибок и переходит в особое состояние:
- любая ошибка выполнения, которая может произойти в обработчике ошибок, обрабатывается как неперехватываемая;
- для выходя из обработчика нельзя использовать операторы End Sub или End Function. Лучше использовать оператор Resume Label.

Немного громоздко, но работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Public Sub TestError()
    Dim intI As Integer
    Dim lngNumber As Long
    
    On Error GoTo MarkA
    
    intI =  1  \  4 
    intI =  1  \  3 
    intI =  1  \  0 
    
    If lngNumber <>  0  Then
        lngNumber =  0 
        GoTo MarkB
    Else
        GoTo ExitHere
    End If
        
MarkA:
    lngNumber = Err.Number
    Resume Next

MarkB:
    On Error GoTo MarkC
    
    intI =  2  \  4 
    intI =  2  \  3 
    intI =  2  \  1 

    If lngNumber <>  0  Then
        GoTo MarkD
    Else
        GoTo ExitHere
    End If
    
MarkC:
    lngNumber = Err.Number
    Resume Next

MarkD:
    On Error GoTo ExitHere

    intI =  3  \  4 
    intI =  3  \  3 
    intI =  3  \  0 
ExitHere:
End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
VB обработка ошибок
    #35240741
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunderOn Error Resume Next
On Error GoTo 0

On Error Resume Next
Err.Raise 6 ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear ' Clear the error.
а как узнать номер ошибки ?
спасибо
...
Рейтинг: 0 / 0
VB обработка ошибок
    #35240772
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Guest1
> tunder
> On Error Resume Next
> On Error GoTo 0
>
> On Error Resume Next
> Err.Raise 6 ' Raise an overflow error.
> MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
> Err.Clear ' Clear the error.
>
> а как узнать номер ошибки ?
Ты будеш очень удивлен: Err.Number и Err.Raise 6, где 6 - это номер
инициируемого исключения
> спасибо
Не за что :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
VB обработка ошибок
    #35240793
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Public Sub TestError()
    Dim intI As Integer
    
    On Error GoTo MarkA
    
    intI =  1  \  4 
    intI =  1  \  3 
    intI =  1  \  0 
    
MarkA:
    Debug.Print Err.Description
    Resume MarkB

MarkB:
    On Error GoTo MarkC
    
    intI =  2  \  4 
    intI =  2  \  3 
    intI =  2  \  1 

MarkC:
    Debug.Print Err.Description
    Resume MarkD

MarkD:
    On Error GoTo ExitHere

    intI =  3  \  4 
    intI =  3  \  3 
    intI =  3  \  0 
'---
    exit sub
ExitHere:
    Debug.Print Err.Description
End Sub
...
Рейтинг: 0 / 0
VB обработка ошибок
    #35240841
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Worobjoff :
у меня vbscript, он на
On Error GoTo ругается, вот и не могу этой процедурой воспользоваться
...
Рейтинг: 0 / 0
VB обработка ошибок
    #35240852
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается, когда пишем
Err.Raise 6 присваиваем номер ошибки 6 ?
потому что при этом Err.Number тоже 6 ?
пишешь Err.Raise 7,- и Err.Number выдаёт 7 ...
...
Рейтинг: 0 / 0
VB обработка ошибок
    #35241004
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest1у меня vbscript, он на On Error GoTo ругается,VBScript и Visual Basic это два разных языка. Похожих, очень похожих, но разных. В VBScript можно только on error resume next делать (ну и on error goto 0).
...
Рейтинг: 0 / 0
VB обработка ошибок
    #35241482
Guest1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
а не подскажет ли кто-нибудь хороший руcскоязычный сайт по VBScript ?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB обработка ошибок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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