Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Перехват,обработка,пропуск ОШИБКИ Добавлено: 27.03.05 12:50  

Автор вопроса:  mistershem | Web-сайт: inf.susu.ac.ru/~shem_a
Всем доброго времени суток !
Тока не надо критиковать и говорить зачем оно надо. :) В предыдущем посте уже спрашивал об ошибке. Написал, что вродь получилось, но оказывается получилось не совсем то, что хотелось бы :(

Вот пример:

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-сайт: inf.susu.ac.ru/~shem_a
 Профиль | | #2
Добавлено: 27.03.05 15:53
То есть отследить ошибку можно только в процедуре ? А не из процедуры НЕЛЬЗЯ. Я прально понял ? (На этом примере заморачиваться не надо.)

Ответить

Номер ответа: 3
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #3 Добавлено: 27.03.05 16:22
Можно по стеку вызовов.
То есть выловить ошибку можно в процедуре, которая вызывала текущую. Срабатывает первый найденный при обратной раскрутке стека обработчик ошибок. Но зарядить совершенно левую процедуру как обработчик ошибок не получится.

Ответить

Номер ответа: 4
Автор ответа:
 mistershem



Вопросов: 8
Ответов: 16
 Web-сайт: inf.susu.ac.ru/~shem_a
 Профиль | | #4
Добавлено: 27.03.05 16:32
GSerg,спасибо за ответы. Все понятно. Буду реализовывать свою задачу по-другому.

Ответить

Номер ответа: 5
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #5
Добавлено: 27.03.05 23:19
on error goto 1

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-сайт: barsik.newmail.ru
 Профиль | | #8
Добавлено: 28.03.05 10:51
Видимо, человек хочет централизованную обработку ошибок учинить...

только зачем, непонятно :(

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 28.03.05 12:06
Видимо, человек хочет централизованную обработку ошибок учинить...

On Error это не способ обработки ошибок :)) Программер уже при написании кода должен знать где возможна ошибка, и ставить условие с вызовом обработчика на это место :) И только в тех случаях когда оное невозможно, пользовать SEH. имхо

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам