Страница: 1 |
Страница: 1 |
Вопрос: Перехват,обработка,пропуск ОШИБКИ
Добавлено: 27.03.05 12:50
Автор вопроса: mistershem | Web-сайт:
Всем доброго времени суток !
Тока не надо критиковать и говорить зачем оно надо. :) В предыдущем посте уже спрашивал об ошибке. Написал, что вродь получилось, но оказывается получилось не совсем то, что хотелось бы :(
Вот пример:
Dim Msg
Private Sub Form_Load()
'Err.Clear
'Err.Raise 6 ' Generate an "Overflow" error.
End Sub
Private Sub Command1_Click()
Err.Clear
Err.Raise 6 ' Generate an "Overflow" error.
End Sub
Private Sub Timer1_Timer()
'Че нуно написать ЗДЕСЬ, чтобы перехватить ошибку.
'Обработать ее, хотя бы вот так:
'MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
'И пропустить ее, чтобы приложение не вылетело.
End Sub
'Заранее спасибо.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 27.03.05 14:26
Объект Err автоматически сбрасывается при выходе из процедуры.
Номер ответа: 2
Автор ответа:
mistershem
Вопросов: 8
Ответов: 16
Web-сайт:
Профиль | | #2
Добавлено: 27.03.05 15:53
То есть отследить ошибку можно только в процедуре ? А не из процедуры НЕЛЬЗЯ. Я прально понял ? (На этом примере заморачиваться не надо.)
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 27.03.05 16:22
Можно по стеку вызовов.
То есть выловить ошибку можно в процедуре, которая вызывала текущую. Срабатывает первый найденный при обратной раскрутке стека обработчик ошибок. Но зарядить совершенно левую процедуру как обработчик ошибок не получится.
Номер ответа: 4
Автор ответа:
mistershem
Вопросов: 8
Ответов: 16
Web-сайт:
Профиль | | #4
Добавлено: 27.03.05 16:32
GSerg,спасибо за ответы. Все понятно. Буду реализовывать свою задачу по-другому.
Номер ответа: 5
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #5
Добавлено: 27.03.05 23:19
1
MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
вроде так
Номер ответа: 6
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #6
Добавлено: 28.03.05 09:53
Dim Msg as String
Private Sub Form_Load()
On Error Resume Next
'Err.Raise 6 ' Generate an "Overflow" error.
Msg=Err.Description
End Sub
Private Sub Command1_Click()
On Error Resume Next
Err.Raise 6 ' Generate an "Overflow" error.
Msg=Err.Description
End Sub
Хотя зачем такой изврат - непонятно...
Номер ответа: 7
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #7
Добавлено: 28.03.05 10:22
Видимо, человек хочет централизованную обработку ошибок учинить...
Номер ответа: 8
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #8
Добавлено: 28.03.05 10:51
только зачем, непонятно
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 28.03.05 12:06
On Error это не способ обработки ошибок ) Программер уже при написании кода должен знать где возможна ошибка, и ставить условие с вызовом обработчика на это место И только в тех случаях когда оное невозможно, пользовать SEH. имхо