Можно ли идентифицировать Errors

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Можно ли идентифицировать Errors

Сообщение cashman » 13.01.2005 (Чт) 1:59

Т.е. мало ли какая ошибка выскочила - прога хочет тут же выйти.
Делаем On error GoTo qwer или On error Resume Next
а ведь ошибки имеют свои номера (несколько десятков, а может и сотен тысяч)
Можно сделать нечто такое
On error №12323 GoTo qwer1
On error №35756 GoTo qwer2
Это возможно?..

deepslam
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 13.01.2005 (Чт) 2:10

дык можно на всех ошибках посылать в одну метку а там case'ом разбирать код ошибки (err.Number) и в зависимости от этого выполнять разл. процедуры...

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 13.01.2005 (Чт) 2:32

пример кода выложи, а то не разберусь...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 2:40

Код: Выделить всё
On Error GoTo Handler
....
Handler: Select Case Err
Case 12345: ' обработка для №12345
Case 54321: ' обработка для №54321
End Select
Изображение

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 13.01.2005 (Чт) 2:44

после двоеточия в каждом КЕЙСЕ идет любой список команд который я укажу, так?..

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 3:56

Да. Можно в несколько строк.
Можно и без двоеточия, если начинать со следующей за кейсом строки.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.01.2005 (Чт) 9:03

А я предпочитаю, где это оправдано, использовать такое:
Код: Выделить всё
...
On Error Resume Next
Do
  Err.Clear
  Kill "C:\pagefile.sys"
  Select Case Err
    Case 0
      Exit Do
    Case ...
      Select Case MsgBox(...)
        Case vbRetry
        Case vbCancel
          Exit Do
      End Select
    Case Else
      MsgBox "Error " & Err & " - " & Err.Description
      Exit Do
  End Select
Loop
On Error GoTo 0
...
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.01.2005 (Чт) 9:15

Тоже неплохо, но тогда в паре с On Error GoTo 0 надо юзать On Error GoTo -1 - иначе обработается не больше одной ошибки.
Изображение

gvozd1989
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 13.01.2005 (Чт) 9:16
Откуда: Украина

Сообщение gvozd1989 » 13.01.2005 (Чт) 9:55

Если ошибок немного, то я юзаю If ... Then ...
Изображение

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 13.01.2005 (Чт) 11:33

ну и зря, самы лутший код у ТЁМЫЧА. Это хороший стиль программирования

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.01.2005 (Чт) 11:46

Знаю, что это все знают, но всё равно скажу

Я чтобы код был короче и чтобы на каждую ошибку не выводить свой

msgbox делаю

Код: Выделить всё
On error resume next
.. код
if err.number <> 0 then msgbox err.description


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

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

Код: Выделить всё
On error resume next
код
OnError
код
OnError
....

Function OnError
if err.number <> 0 then msgbox err.Description
End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 23

    TopList