Обработка ошибок

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

Обработка ошибок

Сообщение xfolder » 15.12.2004 (Ср) 2:32

вот интересно может есть какой нибудь API или способ перехватывания ошибок и передавать управление подпрограмме

к сожалению пока обхожусь
On error goto ErrHand

а можно ли как нить сделать то без меток

On error goto ErrorHand(err.code.....)

?

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 15.12.2004 (Ср) 6:46

А чем метки-то не нравятся? :roll:
Ставь метку и передавай обработку куда хочешь.

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

Сообщение tyomitch » 15.12.2004 (Ср) 6:46

Нельзя без меток.
Изображение

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

Сообщение alibek » 15.12.2004 (Ср) 10:28

Можно On Error Resume Next и после подозрительных мест проверять Select Case Err
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение tyomitch » 15.12.2004 (Ср) 11:09

alibek писал(а):Можно On Error Resume Next и после подозрительных мест проверять Select Case Err
Тогда будет отловлена только одна ошибка - на второй всё равно будет останов.

(Если только не вызывать On Error GoTo -1)
Изображение

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 15.12.2004 (Ср) 13:51

tyomitch писал(а):Тогда будет отловлена только одна ошибка - на второй всё равно будет останов.

Эксперимент - основной инструмент исследователя.
Код: Выделить всё
Option Explicit

Public Function test()
           
            Dim arr
           
10030       On Error Resume Next
           
10050       Debug.Print 6 / 0
10060       Debug.Print Err, Err.Description, "at line " & Erl
           
           
10090       Debug.Print arr(1)
10100       Debug.Print Err, Err.Description, "at line " & Erl
           
           
10130       Debug.Print 6 / 0
10140       Debug.Print Err, Err.Description, "at line " & Erl
           
End Function


Immediate window
Код: Выделить всё
test
11           Division by zero            at line 10050
13           Type mismatch               at line 10090
11           Division by zero            at line 10130

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

Сообщение tyomitch » 15.12.2004 (Ср) 15:11

Убедил, сдаюсь.
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 15.12.2004 (Ср) 16:03

это верно только в одной процедуре! но если ты внутри будешь вызывать другую процедуру, в которой также стоит RESUME NEXT, тол у тебя ничего не выйдет :D

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 15.12.2004 (Ср) 17:42

Эксперимент - основной инструмент исследователя.
Код: Выделить всё
Option Explicit

Public Function test()
           
            Dim arr
           
10030       On Error Resume Next
           
10050       test2
           
10070       Debug.Print 6 / 0
10080       Debug.Print "test", Err, Err.Description, "at line " & Erl
           
10100       test2
           
10120       Debug.Print arr(1)
10130       Debug.Print "test", Err, Err.Description, "at line " & Erl
           
10150       test2
           
10170       Debug.Print 6 / 0
10180       Debug.Print "test", Err, Err.Description, "at line " & Erl
           
10200       test2
           
End Function

Public Function test2()
           
            Dim arr
           
10030       On Error Resume Next
           
10050       Debug.Print 6 / 0
10060       Debug.Print "test2", Err, Err.Description, "at line " & Erl
           
           
10090       Debug.Print arr(1)
10100       Debug.Print "test2", Err, Err.Description, "at line " & Erl
           
           
10130       Debug.Print 6 / 0
10140       Debug.Print "test2", Err, Err.Description, "at line " & Erl
           
End Function


Immediate window
Код: Выделить всё
?test
test2          11           Division by zero            at line 10050
test2          13           Type mismatch at line 10090
test2          11           Division by zero            at line 10130
test           11           Division by zero            at line 10070
test2          11           Division by zero            at line 10050
test2          13           Type mismatch at line 10090
test2          11           Division by zero            at line 10130
test           13           Type mismatch at line 10120
test2          11           Division by zero            at line 10050
test2          13           Type mismatch at line 10090
test2          11           Division by zero            at line 10130
test           11           Division by zero            at line 10170
test2          11           Division by zero            at line 10050
test2          13           Type mismatch at line 10090
test2          11           Division by zero            at line 10130

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.12.2004 (Ср) 19:01

А разрешите и мне задать вопрос по теме, коль уж разговор зашёл....
Вопрос: предположим такой алгоритм обработки ошибки.
В начале каждой процедуры имеется оператор
Код: Выделить всё
On Error Goto ErrHandler

В конце каждой процедуры имеется соответственно метка ErrHandler, после которой идёт вызов глобальной процедуры примерно в таком формате
Код: Выделить всё
Call ErrTrap (Err.Number, Err.Description)


Сама процедура ErrTrap находится в глобальном модуле и имеет такое содержание
Код: Выделить всё
Sub ErrTrap (ByVal ErrNum As Long, Byval ErrDesc As String)
msgbox "Ошибка" & ErrNum & vbCrLf & ErrDesc
End Sub


Ну это так, примерно.
Так вот, есть задумка сделать в глобальном обработчике ошибок сохранение в лог ошибок и значений переменных из вызвавшей ошибку процедуры.
Как это организовать?
Сохранение в лог я знаю как организовать, а вот как передать в глобальный обработчик ошибок все переменные процедуры и их значения - этого я не знаю.
Подскажите, плиз, свои варианты решения.
Мой вариант - это в каждой процедуре обьявлять массив размером с количество переменных в процедуре и задать каждому элементу массива ссылку на переменную. А в глобальный обработчик отправлять ещё одним параметром массив с переменными. И уже в нём (в обработчике) разбирать массив и писать в лог имена переменных (хотя как их вытащить, эти имена переменных) и их значения.

У кого какие будут предложения.

P.S. Прошу прощения за ошибки в синтаксисе - пишу не со своего компьютера - проверить негде, да и некогда.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

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

Сообщение tyomitch » 15.12.2004 (Ср) 19:27

Ruslan, для этого есть готовый аддин (правда, ни названия, ни ссылки не помню :-)).
Идея в нём такая, что он анализирует код процедуры, и все объявленные в ней переменные передаёт в этот глобальный обработчик сплошным списком (как ParamArray). Думаю, такое не сложно написать и самому.
Изображение

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 15.12.2004 (Ср) 20:26

Можно конечно извратится с
Код: Выделить всё
SetUnhandledExceptionFilter

и отлавливать таки все ошибки, но оно тебе надо :?
Гемморой тот еще...

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 15.12.2004 (Ср) 22:21

вчера написал прогу которая обрабатывает все файлы в папке и вставляет вот такой кусочек кода

On Error GoTo EH: GoTo jump
EH: EH 1, "standard: Sub ShowH", Err.Description, Err.Number: Exit Sub
jump:


разумеется имя формы и subа подставляется соотвествующее

хоть код начал нормально смотреться :D

неужели API перехвата нету :?

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.12.2004 (Ср) 22:29

tyomitch писал(а):Ruslan, для этого есть готовый аддин (правда, ни названия, ни ссылки не помню :-)).
Идея в нём такая, что он анализирует код процедуры, и все объявленные в ней переменные передаёт в этот глобальный обработчик сплошным списком (как ParamArray). Думаю, такое не сложно написать и самому.

Мне надо не в IDE, а при работе моей программы. :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.12.2004 (Ср) 22:30

xolod писал(а):Можно конечно извратится с
Код: Выделить всё
SetUnhandledExceptionFilter

и отлавливать таки все ошибки, но оно тебе надо :?
Гемморой тот еще...

А где можно почитать про этот гемморой? :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.12.2004 (Ср) 22:40

xfolder писал(а):вчера написал прогу которая обрабатывает все файлы в папке и вставляет вот такой кусочек кода

On Error GoTo EH: GoTo jump
EH: EH 1, "standard: Sub ShowH", Err.Description, Err.Number: Exit Sub
jump:


разумеется имя формы и subа подставляется соотвествующее

хоть код начал нормально смотреться :D

неужели API перехвата нету :?

Я не про то. Ты про вставку обработчиков ошибок - это уже реализовано в куче всяки аддинов, у меня например установлен MZ-Tolls 3.0

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

А то иногда, пишут, мол типа "Выдаёт ошибку" и всё. Я говорю "Какую ошибку?", а они мне описание ошибки стандартное, типа индекс за пределами массива, или недопустимый вызов функции. И сиди гадай, где произошла ошибка (в какой процедуре, функции), какие значения переменных на момент ошибки? Удручает... :(
А ведь бывают глюки, которые я не могу воспроизвести стопроцентно... Сколько ни потею - фиг. А у пользователя из другого города (возможно с другого края страны) - на ура, только дыхни на клаву - и оп-па - глюк в моей программе.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 15.12.2004 (Ср) 22:46

у меня все ошибки POSTом нa SQL DB в нете сливаются

потом проверяю и исправляю

где взять этот MZ-Tolls 3.0???

google ничего не нашел :(

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 15.12.2004 (Ср) 23:16

to Ruslan Demidow
Известно где - в MSDN :wink:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

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

Сообщение tyomitch » 16.12.2004 (Чт) 4:28

Ruslan Demidow писал(а):
tyomitch писал(а):Ruslan, для этого есть готовый аддин (правда, ни названия, ни ссылки не помню :-)).
Идея в нём такая, что он анализирует код процедуры, и все объявленные в ней переменные передаёт в этот глобальный обработчик сплошным списком (как ParamArray). Думаю, такое не сложно написать и самому.

Мне надо не в IDE, а при работе моей программы. :)

Так будет всюду - и в IDE, и в скомпилированном :-)
Ftr, я говорил не о MZ-Tools.
Изображение

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 16.12.2004 (Чт) 10:20

xfolder писал(а):у меня все ошибки POSTом нa SQL DB в нете сливаются

потом проверяю и исправляю

где взять этот MZ-Tolls 3.0???

google ничего не нашел :(

Я брал отсюда http://www.mztools.com/download/mztools.zip
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 16.12.2004 (Чт) 10:21

xolod писал(а):to Ruslan Demidow
Известно где - в MSDN :wink:

Как всегда...
Ясно. :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 16.12.2004 (Чт) 10:25

tyomitch писал(а):
Ruslan Demidow писал(а):
tyomitch писал(а):Ruslan, для этого есть готовый аддин (правда, ни названия, ни ссылки не помню :-)).
Идея в нём такая, что он анализирует код процедуры, и все объявленные в ней переменные передаёт в этот глобальный обработчик сплошным списком (как ParamArray). Думаю, такое не сложно написать и самому.

Мне надо не в IDE, а при работе моей программы. :)

Так будет всюду - и в IDE, и в скомпилированном :-)
Ftr, я говорил не о MZ-Tools.

Вот даже как?!!!
Хочу глянуть... Может вспомнишь? А....
Очень хочется попробовать.

Кстати, а с запихиванием строки в MagicID не прошло. Почему-то изменяется размер записи и текст сообщения из базы уже не вытащить, программа ищет его уже по другому адресу.
Там ведь как: сначала читаем в файле заголовка смещение в файле сообщений. По этому смещению читаем заголовок сообщения, а уже после заголовка сообщения идёт текст с произвольной длинной. Т.е. в файле заголовков все записи одной длины, а в файле сообщений - разной.
Ну это так.... для сведения. В общем буду решать.... Спасибо за помощь! :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

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

Сообщение tyomitch » 16.12.2004 (Чт) 10:36

Строку-то фиксированной длины объявил хоть?

А аддин не помню :-( Но ты правильно понял, о чём идёт речь? Он "препроцессит" код, добавляя во все функции свои обработчики.
Изображение

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 16.12.2004 (Чт) 11:06

Ruslan Demidow писал(а):Я имел ввиду сделать в своей программе такой, скажем глобальный обработчик - что бы например при ошибке в моей программе пользователь мог отослать мне лог со описанием ошибки составленным этим обработчиком, списком переменных и их значениями.
Всю работу по созданию, ведению лога ошибок, занесением в лог названия процедуры в которой произошла ошибка, номера ошибки, описания ошибки, списка переменных, которые используются в этой процедуре и их значений должен вести этот обработчик в моей программе.

А то иногда, пишут, мол типа "Выдаёт ошибку" и всё. Я говорю "Какую ошибку?", а они мне описание ошибки стандартное, типа индекс за пределами массива, или недопустимый вызов функции. И сиди гадай, где произошла ошибка (в какой процедуре, функции), какие значения переменных на момент ошибки? Удручает... :(
А ведь бывают глюки, которые я не могу воспроизвести стопроцентно... Сколько ни потею - фиг. А у пользователя из другого города (возможно с другого края страны) - на ура, только дыхни на клаву - и оп-па - глюк в моей программе.



VB Watch Protector
Программа позволяет добавить в код VB проекта процедуры обработки ошибок. Куча способов.
В первом споcобе, при возникновении ошибки программа предложит прервать выполнение, игнорировать ошибку, попробовать ещё раз или послать отчёт с детальной информацией разработчику. В этом отчёте указывается информация об ошибке, значения переменных и свойства объектов, снимок экрана, информация о пользователе и о системе.
Во втором программа создаёт zip файл, содержащий информацию об ошибке, добавляет информацию в лог файл событий NT и при возможности отправляет эту информацию по почте. При этом пользователю об ошибке не сообщается.
и.т.д.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 16.12.2004 (Чт) 12:32

Ок. Спасибо.
Но насколько я понял - он платный..
Где взять ломалку... :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 16.12.2004 (Чт) 13:28

Ruslan Demidow писал(а):Где взять ломалку... :)

Дык, не в этом форуме с такими вопросами.
Ломалки для последней версии нет, но она и не нужна.
Работает и так, если в проекте не более 10 модулей.
Кроме того, после обработки проекта можно посмотреть сгенерированный код и использовать его фрагменты без VB Watch Protector.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 16.12.2004 (Чт) 16:14

tyomitch писал(а):Строку-то фиксированной длины объявил хоть?

Объявил, сохраняется, пишется, мой ридер сообщение видит и читает, а родной софт мои сообщения не видит. В общем написал письмо разработчику. Подожду ответа. Посмотрю, что он скажет. Спасибо. :)
tyomitch писал(а):А аддин не помню :-( Но ты правильно понял, о чём идёт речь? Он "препроцессит" код, добавляя во все функции свои обработчики.

Да я понял. Мысль у меня такая - бетатестерам разослать релиз со встроенным глобальным обработчиком, они отошлют мне явные и неявные баги. Я их исправлю и выдам на горА релиз уже без обработчика (если такое возможно конечно же). :)
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 16.12.2004 (Чт) 16:18

marvan писал(а):
Ruslan Demidow писал(а):Где взять ломалку... :)

Дык, не в этом форуме с такими вопросами.
Ломалки для последней версии нет, но она и не нужна.

Ясно.

marvan писал(а):Работает и так, если в проекте не более 10 модулей.
Кроме того, после обработки проекта можно посмотреть сгенерированный код и использовать его фрагменты без VB Watch Protector.

А модули форм тоже считаются или нет? Или просто модули?
У меня примерно 5-6 классов + 4 модуля + 8-9 форм.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

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

Сообщение tyomitch » 16.12.2004 (Чт) 17:54

Ruslan Demidow писал(а):
tyomitch писал(а):А аддин не помню :-( Но ты правильно понял, о чём идёт речь? Он "препроцессит" код, добавляя во все функции свои обработчики.

Да я понял. Мысль у меня такая - бетатестерам разослать релиз со встроенным глобальным обработчиком, они отошлют мне явные и неявные баги. Я их исправлю и выдам на горА релиз уже без обработчика (если такое возможно конечно же). :)

Если надо, дам исходники своего аддина для похожей цели (расставления обработчиков во все процедуры, передающих в глобальный обработчик имя процедуры, в которой произошла ошибка, и Call Stack). Туда будет несложно дописать и вывод значений переменных. Выкладывать?
Изображение

xfolder
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 133
Зарегистрирован: 22.07.2002 (Пн) 18:57
Откуда: United Kingdom

Сообщение xfolder » 16.12.2004 (Чт) 18:24

marvan писал(а):
Ruslan Demidow писал(а):Я имел ввиду сделать в своей программе такой, скажем глобальный обработчик - что бы например при ошибке в моей программе пользователь мог отослать мне лог со описанием ошибки составленным этим обработчиком, списком переменных и их значениями.
Всю работу по созданию, ведению лога ошибок, занесением в лог названия процедуры в которой произошла ошибка, номера ошибки, описания ошибки, списка переменных, которые используются в этой процедуре и их значений должен вести этот обработчик в моей программе.

А то иногда, пишут, мол типа "Выдаёт ошибку" и всё. Я говорю "Какую ошибку?", а они мне описание ошибки стандартное, типа индекс за пределами массива, или недопустимый вызов функции. И сиди гадай, где произошла ошибка (в какой процедуре, функции), какие значения переменных на момент ошибки? Удручает... :(
А ведь бывают глюки, которые я не могу воспроизвести стопроцентно... Сколько ни потею - фиг. А у пользователя из другого города (возможно с другого края страны) - на ура, только дыхни на клаву - и оп-па - глюк в моей программе.



VB Watch Protector
Программа позволяет добавить в код VB проекта процедуры обработки ошибок. Куча способов.
В первом споcобе, при возникновении ошибки программа предложит прервать выполнение, игнорировать ошибку, попробовать ещё раз или послать отчёт с детальной информацией разработчику. В этом отчёте указывается информация об ошибке, значения переменных и свойства объектов, снимок экрана, информация о пользователе и о системе.
Во втором программа создаёт zip файл, содержащий информацию об ошибке, добавляет информацию в лог файл событий NT и при возможности отправляет эту информацию по почте. При этом пользователю об ошибке не сообщается.
и.т.д.


дерьмо прога

у меня был sub где всего одна строка так VB watch вставил 20 своих строк

после ее работы код совсем нечитаеммый

След.

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

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

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 41

    TopList