Страница: 1 | 2 | 3 | 4 | 5 |
Вопрос: Пропустить часть ошибок
Добавлено: 15.05.09 18:05
Автор вопроса: AWР | Web-сайт:
Ответы
Всего ответов: 61
Номер ответа: 31
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #31
Добавлено: 19.05.09 10:54
Номер ответа: 32
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #32
Добавлено: 19.05.09 10:55
Номер ответа: 33
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #33
Добавлено: 19.05.09 11:30
Вау!! )))))) Такого я еще не видел!
Много всяких перлов от спецов по VB6/VBA видел на этом форуме... Но чтобы такое!!! жесть! )))
Номер ответа: 34
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #34
Добавлено: 19.05.09 11:34
зато работает. И очень даже неплохо.
Номер ответа: 35
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #35
Добавлено: 19.05.09 12:21
По всей видимости, у нас тобой разное понимание слова "работает"
Номер ответа: 36
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #36
Добавлено: 19.05.09 12:25
меня интересует конечный результат. То что увидит пользователь. А какие навороты я внутри использовал, это мои личные трудности, я так считаю. А программирование ради программирования - это хобби! (в смысле для тех, кто это может себе позволить)
Номер ответа: 37
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #37
Добавлено: 19.05.09 13:09
Сергей, твой код не заработает.
В err.description никогда не будет тех строк что ты ожидаешь, там будут другие строки с описанием ошибки типа "Файл 1.txt не найден" (причем в различных локализациях .NET Framework описания будут разные), которые непросто будет различать.
То есть код выполнится, но ни один обработчик не сработает, даже если и произойдут ошибки. И в этом проблема - реально код выполнился с ошибкой, пользователь же даже не узнает этого.
Чтоб сделать подобное тому что сделал я, тебе прийдется перебирать не по Err.Description, а по Err.Number.
А мало того что эти номера ничего сами по себе не значит, так там и не все номера есть которые возможны и номера еще помнить нужно.
Сможешь навскидку десяток номеров ошибок привести?
меня интересует конечный результат. То что увидит пользователь. А какие навороты я внутри использовал, это мои личные трудности, я так считаю. А программирование ради программирования - это хобби! (в смысле для тех, кто это может себе позволить)
Пользвоателя интерисует рабочая программа. А ты сейчас написал нерабочий код. И о том что он нерабочий не узнаешь ни ты (если конечно не проведешь тесты с отладчиком, которые бы покрыли все обрабочтики) ни пользователь.
Номер ответа: 38
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #38
Добавлено: 19.05.09 14:07
Я показал путь, а если нужна конкретная реализация, то конечно по номеру. И эти номера не секрет.
Главное, я хотел сказать что и та и та реализация допустима. Нельзя категорично говорить, что одно - мед, другое - жесть. Все надо рассматривать в приложении к задаче и стилю (почерку) программиста.
Номер ответа: 39
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #39
Добавлено: 19.05.09 14:26
SteelBrand,
Можешь с помощью On Error ... сделать что-то типа такого?
Да
Номер ответа: 40
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #40
Добавлено: 19.05.09 14:28
И чаще всего виноват не язык программирования, особенно не для корпоративных решений
Номер ответа: 41
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #41
Добавлено: 19.05.09 14:43
Хотя, Сергей, ты не прав - не стоит использовать старье, где есть написанное гораздо лучше и правильнее
Номер ответа: 42
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #42
Добавлено: 19.05.09 14:47
Я показал путь, а если нужна конкретная реализация, то конечно по номеру
Ну покажи нам конкретную реализацию с номерами.
И эти номера не секрет.
Для кого не секрет?
10 минут изучения документации не привели меня к списке номеров ошибок, поэтому могу предположить что либо этих номеров в MSDN вообще нет, либо их нужно искать в старых MSDN за 2000 год.
Про исключения иформация чуть ли не на каждой странице, читай - не хочу.
Главное, я хотел сказать что и та и та реализация допустима. Нельзя категорично говорить, что одно - мед, другое - жесть. Все надо рассматривать в приложении к задаче и стилю (почерку) программиста.
Сергей, ты обречен на поражение, потому что обработка ошибок, унаследованная из VB6 это именно и есть жесть. Потому что она не дает всех возможностей для обрабокти и локализации ошибки которые предоставляет платформа.
С файловой системой я неудачный пример привел, и в принципе подобный код с помощью объекта Err можно воспроизвести (впрочем ты этого не смог сделать), потому что в VB6 была файловая система и были какие-то коды ошибок для работы с файловой системой.
А возможность делать HTTP-запросы была? Попробуй например воспроизвести что-то из этого
Что из этого ты сможешь вытянить из объекта Err?
ex.Message - сообщение сможешь вытянуть из Err.Desciption
Ну и еще номер ошибки 5, который вряд является кодом, специфичным для ошибок HTTP.
Номер ответа: 43
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #43
Добавлено: 19.05.09 14:56
На всякий случай если не просек фишку - в .NET нет поддержки операторов On Error Goto... On Error Resume Next, и объект Err также очень слабо интегрирован.
Чтоб любители Vb6 могли все это использовать в VB .NET, компилятор выполняет реализацию обрабокти ошибок "в стиле VB6", комбинируя в кучу конструкции Try/Catch, GoTo и вызовы различных Helper-методов.
Здесь в топике уже показывали как выглядит On Error Resume Next в IL-коде, желающие копнуть глубже - берут рефлектор в руки.
Номер ответа: 44
Автор ответа:
_Serega
Вопросов: 1
Ответов: 43
Профиль | | #44
Добавлено: 22.05.09 23:00
Дело в том, что по большому счету событие ошибки, раз уж оно перехвачено - оно одно на все методы, при всем их разнообразии, которые просто определяет что делать, если произошла ошибка, а то что TRY красивее транслируется в IL - вовсе не означает, что он работает в самом деле по другому, более того я предположу, что в реальном коде будет сгенерировано больше количество команд и это может быть нужно или нет, но я не вижу в этом никакого преимущества. Что значит плохо или хорошо поддерживается? Это метод и он или выполняет свои инструкции или нет - и с этим никаких проблем нет - исправно работает и то и другое. Если же ты такой грамотный и опытный, в отличии от меня, то с чего вдруг ты не знаешь как работает Windows? То что на API - об этом не только у Эплмана написано, об этом написано и в MSDN - непосредственной сопроводительной документации того языка на котором ты целых 5 лет работаешь.))))
Номер ответа: 45
Автор ответа:
_Serega
Вопросов: 1
Ответов: 43
Профиль | | #45
Добавлено: 22.05.09 23:19
Про тот же пример с соеденением и HTTP-запросы, ну случилась ошибка и блок или выполняет свои функции дальше или прерывает свою работу, в чем конкретно преимущество? Что будет выведено сообщение отчего он это сделал? Сама установка соеденения в любом случае через API происходит, ну и считай HRESULT и так же по коду возврата сделай ту же кейсовую обработку, принципиальная разница то в чем? Кстатьи в MSDN в действительности часть документации по этим вопросам находится только в разделах С и отсутствует в разделах VB, но это как бы вопросы к майкрософт, а не ко мне.