_Serega пишет:
Если же ты такой грамотный и опытный, в отличии от меня, то с чего вдруг ты не знаешь как работает Windows?
За виндой работаю уже лет 10 может больше. Отлично знаю как она работает. Если нажать кнопку "Пуск" то вылезет меню где можно запускать разные программки. Ну и если повисла то нужно нажимть Reset и все будет хорошо. Поэтому не говори что я не знаю как работает Windows.
_Serega пишет:
То что на API
А что такое API?
_Serega пишет:
об этом не только у Эплмана написано
А кто такой Эплман?
_Serega пишет:
об этом написано и в MSDN
А это где?
_Serega пишет:
непосредственной сопроводительной документации того языка на котором ты целых 5 лет работаешь.))))
Да ладно, ладно! Признаюсь - я работаю с .NET всего 2 недели, все что знаю о нем, вычитал с башорга.
_Serega пишет:
Дело в том, что по большому счету событие ошибки, раз уж оно перехвачено - оно одно на все методы, при всем их разнообразии, которые просто определяет что делать, если произошла ошибка, а то что TRY красивее транслируется в IL - вовсе не означает, что он работает в самом деле по другому, более того я предположу, что в реальном коде будет сгенерировано больше количество команд и это может быть нужно или нет, но я не вижу в этом никакого преимущества. Что значит плохо или хорошо поддерживается? Это метод и он или выполняет свои инструкции или нет - и с этим никаких проблем нет - исправно работает и то и другое. Если же ты такой грамотный и опытный, в отличии от меня, то с чего вдруг ты не знаешь как работает Windows? То что на API - об этом не только у Эплмана написано, об этом написано и в MSDN - непосредственной сопроводительной документации того языка на котором ты целых 5 лет работаешь.))))
Прикольно...
Будет тебе известно, что Try/Catch не могут "красивее транслироваться в IL". Потому что Try/Catch это есть часть IL.
Как думаешь, на каком языке это написано?
.try L_0001 to L_0010 catch [mscorlib]System.Exception handler L_0010 to L_0021
И как это ни странно, в IL нет команды On Error Goto. Как думаешь, почему? И как тогда On Error Goto работает, ведь первый этап компиляции программы - это компиляция в промежуточный IL-код.
On Error ... - это лишь некая надстройка которую делает компилятор VB6 над стандартным механизмом обработки ошибок в .NET - надстройка, частично похожая на "обработку ошибок", которая была в VB6, обладающая меньшими возможностямии по сравнению с оригинальынм механизмом (я уже привел 2 примера использования Try/Catch, в ответ получил только один неработающий пример с On Error).
Про MSDN мне не нужно рассказывать что там есть и чего там нет - эта библитоека у меня постоянно запущена на компьютере.
Опять же если речь зашла об MSDN, я повторюсь - я хотел бы увидеть список кодов ошибок (Error.Number) с описанием каждой. То есть код ошибки 5 это конечно очень круто но я хочу знать что эта цифра означает. Не сливай в сторону Win32API, он здесь абсолютно не при чем, это коды ошибок самого VB, до кодов ошибок API здесь как до Марса.
_Serega пишет:
Про тот же пример с соеденением и HTTP-запросы, ну случилась ошибка и блок или выполняет свои функции дальше или прерывает свою работу, в чем конкретно преимущество? Что будет выведено сообщение отчего он это сделал? Сама установка соеденения в любом случае через API происходит, ну и считай HRESULT и так же по коду возврата сделай ту же кейсовую обработку, принципиальная разница то в чем? Кстатьи в MSDN в действительности часть документации по этим вопросам находится только в разделах С и отсутствует в разделах VB, но это как бы вопросы к майкрософт, а не ко мне.
Ну... Вместо одной цифры 5 которая в данном случае ничего не означает, ты получаешь полную информацию о том, что за ошибка произошла, где, и какие причины ее возникновения. Какие могут быть преимущества у этого? Даже не знаю...
_Serega пишет:
Сама установка соеденения в любом случае через API происходит
О чем ты? Я никаких соединений не устанавливаю! Я вызываю метод WebClient.DownloadString и вообще не знаю как она работает и какие соединения устанавливает, и устанавливает ли вообще что-нибудь.
_Serega пишет:
ну и считай HRESULT и так же по коду возврата
Какой код возврата? WebClient.DownloadString возвращает строку и никаких кодов возврата ты не получишь, даже GetLastError тебе мало чем поможет, поскольку после функции которая вызвала ошибку, которая нас интерисует, могло произойти еще 10 функций для закрытия соединений, утилизации неуправляемых ресурсов и т.п.
Более того, с чего ты взял что ошибка происходит из-за какой-то АПИ-функции?
Простейший пример - ты в DownloadString передал вместо URL пустую строку.
Ты получишь исключение, сообщающее о том что передан некорректный URL. Какой HRESULT ты собираешься искать? Его нет, потому что никаких вызовов АПИ не приосходило, а если какие-то и происходили, то не имеющие никакого отношения к ошибке.
Напиши
Console.WriteLine("{0}{1}")
Будет исключение. Источник его ты найти не сможешь (разве что там лежит в Err.Desciption).
Ладно, я не вижу смысла продолжать защищать обработку ошибок аля .NET перед обработкой ошибок аля VB6. Лично для меня все было давно ясно.
Ты судя по всему начинаешь изучение .NET и я это одобряю. То что ты пока не разобрался что имеет значение в .NET, а что не имеет, что хорошо а что плохо - не твоя вина. Объем информации который ложится на программиста после VB6 просто колоссальный, и для того чтоб его осознать нужно время, причем исчисляемое десятками месяцев.
Пытаться меня обвинить в том что я не знаю что такое MSDN и как ею пользоваться бессмысленно - сам MSDN мне уже давно мало в чем помогает, и если возникают вопросы на которые у меня нет ответов, то я запускаю не MSDN, а рефлектор.
Хотя конечно, реализация очень геморная: предварительно нужна длительная тестовая прогонка с вылавливанием всевозможных ошибок для расширения блока select...end select.
Так что можно, но криво и косо. В .net ессно лучше на порядок.
Хотя я не настаиваю - каждый др..ит как сам хочет А я давно на .net переехал.
))) Ну, нет - нет у меня такой задачи обвинять кого то или защитить VB6 и в любом случае диалог был познавательный, при этом я благодарен и тебе за те выкладки которые ты предоставил аргументируя свою позицию, но в то же время представление о том как работает .Net у тебя отчасти неверные, с другой стороны раз ты без этих знаний обходишься в работе, значит тебе того что ты знаешь и как это понимаешь вполне достаточно. Про MSDN - я интегрировал несколько ресурсов туда, например, codeproject.com - там отличные примеры кода и статьи, а что такое рефлектор?
VBD Unit, на этом форуме ценится юмор. Особенно очень тонкий и направленый против других участников форума.
Но твой тупизм не имеет ничего общего к этому, будь добр возьми тетрадку и конспектируй все что мы тут пишем, а к практическим занятиям притсупишь когда будешь к этому готов, потому что ты просто ухудшаешь атмосферу клубного общения