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

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

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

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

Почему не работает ?
...
Рейтинг: 0 / 0
15.12.2005, 18:18
    #33439092
tunder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
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
16.12.2005, 11:40
    #33440160
VB обработка ошибок
При возникноваении ошибки 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
Период между сообщениями больше года.
07.04.2008, 18:08
    #35240741
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
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
07.04.2008, 18:16
    #35240772
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
> Автор: 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
07.04.2008, 18:23
    #35240793
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
Код: 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
07.04.2008, 18:42
    #35240841
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
to Worobjoff :
у меня vbscript, он на
On Error GoTo ругается, вот и не могу этой процедурой воспользоваться
...
Рейтинг: 0 / 0
07.04.2008, 18:46
    #35240852
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
получается, когда пишем
Err.Raise 6 присваиваем номер ошибки 6 ?
потому что при этом Err.Number тоже 6 ?
пишешь Err.Raise 7,- и Err.Number выдаёт 7 ...
...
Рейтинг: 0 / 0
07.04.2008, 20:36
    #35241004
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
Guest1у меня vbscript, он на On Error GoTo ругается,VBScript и Visual Basic это два разных языка. Похожих, очень похожих, но разных. В VBScript можно только on error resume next делать (ну и on error goto 0).
...
Рейтинг: 0 / 0
08.04.2008, 09:19
    #35241482
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB обработка ошибок
спасибо
а не подскажет ли кто-нибудь хороший руcскоязычный сайт по VBScript ?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB обработка ошибок / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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