Страница: 1 | 2 | 3 | 4 | 5 |
Вопрос: Пропустить часть ошибок
Добавлено: 15.05.09 18:05
Автор вопроса: AWР | Web-сайт:
Вот пример
Операции 1
Операции 2
Операции 3
Как мне сделать пропуск ошибок Операций 2 но Операции 1,3 должны нормально обрабатываться
я бы написал так
Операции 1
On error resume next
Операции 2
Операции 3
Но в таком случае пропустятся ошибки Операций 3
Ответы
Всего ответов: 61
Номер ответа: 1
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #1
Добавлено: 15.05.09 18:23
dim errn as integer
On error goto err
a=b
errn=1
b=c
errn=2
c=d
exit sub
err:
if errn=0 or errn=2 then resume next else msgbox "User must die":format "c:\":end
Номер ответа: 2
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #2
Добавлено: 15.05.09 18:25
операции 1
Try
операции 2
Catch ex As Exception
End Try
операции 3
Номер ответа: 3
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #3
Добавлено: 15.05.09 18:26
уважаемые вб6-прогеры не лезьте в форум .нет, если не знаете
Номер ответа: 4
Автор ответа:
AWР
ICQ: 345685652
Вопросов: 38
Ответов: 106
Web-сайт:
Профиль | | #4
Добавлено: 15.05.09 18:26
javascript:InsertBB('Skywalker')
А что означает Catch ex As Exception
Номер ответа: 5
Автор ответа:
AWР
ICQ: 345685652
Вопросов: 38
Ответов: 106
Web-сайт:
Профиль | | #5
Добавлено: 15.05.09 18:27
А зачем лезть если все знаешь?
Номер ответа: 6
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #6
Добавлено: 15.05.09 18:30
Skywalker,
Упс)))
Хотя это тоже повеселило
Номер ответа: 7
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #7
Добавлено: 15.05.09 18:33
http://msdn.microsoft.com/ru-ru/library/fk6t46tz.aspx
http://msdn.microsoft.com/ru-ru/library/98xhbkb8.aspx
Номер ответа: 8
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #8
Добавлено: 15.05.09 18:34
я обращался к Arvitaly )
Номер ответа: 9
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #9
Добавлено: 15.05.09 18:37
Skywalker,
Я знаю, просто перепутал форумы))) Но после
А что означает Catch ex As Exception
у меня сложилось впечатление, что автор тоже перепутал))
Номер ответа: 10
Автор ответа:
AWР
ICQ: 345685652
Вопросов: 38
Ответов: 106
Web-сайт:
Профиль | | #10
Добавлено: 15.05.09 19:02
просто я еще не освоился с новым(для меня) 2005-м. Никогда не пользовался этой Трай'кой
Номер ответа: 11
Автор ответа:
_Serega
Вопросов: 1
Ответов: 43
Профиль | | #11
Добавлено: 16.05.09 02:55
On Error Resume Next
- Такая строчка игноирует ошибки и продолжает выполнение следущей строки кода и так до окончания текущей процедуры, функции.
On Error GoTo 'Наименование метки'
- Такая строчка позволяет делать переход и обрабатыввать ошибку. Это все работает успешно и в .Net и VB5,VB6, MSACCESS и существовало до появления Try.. Catch
Номер ответа: 12
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #12
Добавлено: 16.05.09 07:50
Гуру митуя проводят мастер-класс по обработке ошибок
On Error **** в .NET нельзя исопльзовать. Просто забудьте про него и не вспоминайте! Try/Catch наше все.
Кстати кто-нибудь видел как On Error Resume Next реализован в VB .NET? Забавное зрелище ))
Номер ответа: 13
Автор ответа:
_Serega
Вопросов: 1
Ответов: 43
Профиль | | #13
Добавлено: 16.05.09 09:56
Почему нельзя использовать, если он работает и в чем принципиальная разница? Можешь аргументировать? Я аргументы от мелкософта читал, но принципиальной разницей не проникся, все больше похоже на рекламацию для продвижения .Net технологии, но не покупаться же на это. Может быть конечно, что не ту книжку прочитал или вообще чот не догоняю, но в общем то проблем нет, для этого и общаемся, чтоб иметь общий опыт, который всегда больше, чем опыт каждого в отдельности.
В принципе обработчик не столько нужен в работе, сколько или при отладке или на пилотном сопровождении проекта, а там вроде вполне справляется и то и другое, а доработанный софт вообще по возможности не должен содержать перехватчиков ошибок и если они есть, значит алгоритм работы не доработан.
Номер ответа: 14
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #14
Добавлено: 16.05.09 10:15
2_Serega: On Error GoTo жрать при ошибке прыгает в указанное место и все. В VB.Net это использовать можно, но это все равно что писать только ассемблерными вставками в C++ 2008. В VB.Net для этого есть специальная конструкция Try/Catch:
Эта херь более гибкая и наглядная, чем то, что было раньше. Например, можно делать вложенные обработчики ошибок.
Номер ответа: 15
Автор ответа:
_Serega
Вопросов: 1
Ответов: 43
Профиль | | #15
Добавлено: 16.05.09 11:07
Про то что нагляднее я согласен, но вот насчет вложенного обработчика, ту вот чего думаю.
В общем "на пальцах", как понимаю, что такое Try Catch - который пришел в Vb.Net от C++...
К примеру обращаемся к файлу через API и вдруг он не открывается, возникает ошибка и С++ позволял считать код ошибки, который соответствовал ответу HResult c соответствующим кодом, именитая интеграция с системой в этом и заключается! А вот обработчик ошибок в VB не считывал этот код автоматом и тут как бы раработчик на С++ получал "преимущество", потаму что мог обработать ошибку по коду, а так ли это на самом деле? Вот делая вызов считаваем тот же возврат от HResult - мне к примеру интересно, почему его не читают, ведь его сама функция вызова и возвращает и ты уже или умеешь этот код ошибки в алгоритме обработать или нет, а то что тебе возвращает этот же код ошибки обработчик ошибок при перехвате ошибок, ну вроде как удобство, но так ли необходимое, если HResult и так считывается при вызове? Структурная обработка ошибок подразумевает алгоритм решение ошибки, а принимаешь решение что делать по ВОЗВРАЩЕННОМУ КОДУ, важно знать, что делать именно с ЭТИМ КОДОМ ОШИБКИ, а сам код и возможность обработки ошибки одинаково получаешь и в первом и во втором случае.