Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 | 4 | 5 |

 

  Вопрос: Пропустить часть ошибок Добавлено: 15.05.09 18:05  

Автор вопроса:  AWР | Web-сайт: bomber.h17.ru | ICQ: 345685652 

Ответить

  Ответы Всего ответов: 61  

Номер ответа: 46
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #46 Добавлено: 22.05.09 23:40
_Serega пишет:
Если же ты такой грамотный и опытный, в отличии от меня, то с чего вдруг ты не знаешь как работает Windows?

За виндой работаю уже лет 10 может больше. Отлично знаю как она работает. Если нажать кнопку "Пуск" то вылезет меню где можно запускать разные программки. Ну и если повисла то нужно нажимть Reset и все будет хорошо. Поэтому не говори что я не знаю как работает Windows.

_Serega пишет:
То что на API

А что такое API?

_Serega пишет:
об этом не только у Эплмана написано

А кто такой Эплман?

_Serega пишет:
об этом написано и в MSDN

А это где?

_Serega пишет:
непосредственной сопроводительной документации того языка на котором ты целых 5 лет работаешь.))))

Да ладно, ладно! Признаюсь - я работаю с .NET всего 2 недели, все что знаю о нем, вычитал с башорга.

Ответить

Номер ответа: 47
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #47 Добавлено: 23.05.09 00:00
_Serega пишет:
Дело в том, что по большому счету событие ошибки, раз уж оно перехвачено - оно одно на все методы, при всем их разнообразии, которые просто определяет что делать, если произошла ошибка, а то что TRY красивее транслируется в IL - вовсе не означает, что он работает в самом деле по другому, более того я предположу, что в реальном коде будет сгенерировано больше количество команд и это может быть нужно или нет, но я не вижу в этом никакого преимущества. Что значит плохо или хорошо поддерживается? Это метод и он или выполняет свои инструкции или нет - и с этим никаких проблем нет - исправно работает и то и другое. Если же ты такой грамотный и опытный, в отличии от меня, то с чего вдруг ты не знаешь как работает Windows? То что на API - об этом не только у Эплмана написано, об этом написано и в MSDN - непосредственной сопроводительной документации того языка на котором ты целых 5 лет работаешь.))))


Прикольно...
Будет тебе известно, что Try/Catch не могут "красивее транслироваться в IL". Потому что Try/Catch это есть часть IL.

Как думаешь, на каком языке это написано?
  1.     .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 здесь как до Марса.

Ответить

Номер ответа: 48
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #48 Добавлено: 23.05.09 00:33
_Serega пишет:
Про тот же пример с соеденением и HTTP-запросы, ну случилась ошибка и блок или выполняет свои функции дальше или прерывает свою работу, в чем конкретно преимущество? Что будет выведено сообщение отчего он это сделал? Сама установка соеденения в любом случае через API происходит, ну и считай HRESULT и так же по коду возврата сделай ту же кейсовую обработку, принципиальная разница то в чем? Кстатьи в MSDN в действительности часть документации по этим вопросам находится только в разделах С и отсутствует в разделах VB, но это как бы вопросы к майкрософт, а не ко мне.

Ну... Вместо одной цифры 5 которая в данном случае ничего не означает, ты получаешь полную информацию о том, что за ошибка произошла, где, и какие причины ее возникновения. Какие могут быть преимущества у этого? Даже не знаю...

_Serega пишет:
Сама установка соеденения в любом случае через API происходит

О чем ты? Я никаких соединений не устанавливаю! Я вызываю метод WebClient.DownloadString и вообще не знаю как она работает и какие соединения устанавливает, и устанавливает ли вообще что-нибудь.

_Serega пишет:
ну и считай HRESULT и так же по коду возврата

Какой код возврата? WebClient.DownloadString возвращает строку и никаких кодов возврата ты не получишь, даже GetLastError тебе мало чем поможет, поскольку после функции которая вызвала ошибку, которая нас интерисует, могло произойти еще 10 функций для закрытия соединений, утилизации неуправляемых ресурсов и т.п.

Более того, с чего ты взял что ошибка происходит из-за какой-то АПИ-функции?
Простейший пример - ты в DownloadString передал вместо URL пустую строку.
Ты получишь исключение, сообщающее о том что передан некорректный URL. Какой HRESULT ты собираешься искать? Его нет, потому что никаких вызовов АПИ не приосходило, а если какие-то и происходили, то не имеющие никакого отношения к ошибке.

Напиши
  1. Console.WriteLine("{0}{1}")

Будет исключение. Источник его ты найти не сможешь (разве что там лежит в Err.Desciption).



Ладно, я не вижу смысла продолжать защищать обработку ошибок аля .NET перед обработкой ошибок аля VB6. Лично для меня все было давно ясно.

Ты судя по всему начинаешь изучение .NET и я это одобряю. То что ты пока не разобрался что имеет значение в .NET, а что не имеет, что хорошо а что плохо - не твоя вина. Объем информации который ложится на программиста после VB6 просто колоссальный, и для того чтоб его осознать нужно время, причем исчисляемое десятками месяцев.

Пытаться меня обвинить в том что я не знаю что такое MSDN и как ею пользоваться бессмысленно - сам MSDN мне уже давно мало в чем помогает, и если возникают вопросы на которые у меня нет ответов, то я запускаю не MSDN, а рефлектор.

Ответить

Номер ответа: 49
Автор ответа:
 Дмитрий



Вопросов: 0
Ответов: 11
 Профиль | | #49 Добавлено: 25.05.09 09:55
Странно, у меня такое заработало. Заметьте, ссылаюсь на Description ошибки...
  1. Private Sub Command1_Click()
  2. Me.CommonDialog1.ShowOpen
  3. Me.Text1.Text = Me.CommonDialog1.FileName
  4. End Sub
  5.  
  6. Private Sub Command2_Click()
  7. On Error GoTo 1
  8. Dim fn As Integer
  9. Dim counter As Integer
  10. Dim str() As String
  11. counter = 0
  12. fn = FreeFile
  13. Open Me.Text1.Text For Input As fn
  14. Do Until EOF(fn)
  15. counter = counter + 1
  16. ReDim Preserve str(counter)
  17. Line Input #fn, str(counter)
  18. Me.Text2.Text = Me.Text2.Text & vbCrLf & str(counter)
  19. Loop
  20. Close fn
  21. 'Dim i As Integer
  22. 'For i = 0 To UBound(str)
  23. 'Me.Text2.Text = Me.Text2.Text & vbCrLf & str(i)
  24. 'Next
  25. GoTo 2
  26. 1: Select Case (Err.Description)
  27. Case Is = "File not found"
  28. MsgBox ("Файл не найден")
  29. Case Is = "Path not found"
  30. MsgBox ("Папка не найдена")
  31. End Select
  32. 2: End Sub


Хотя конечно, реализация очень геморная: предварительно нужна длительная тестовая прогонка с вылавливанием всевозможных ошибок для расширения блока select...end select.
Так что можно, но криво и косо. В .net ессно лучше на порядок.
Хотя я не настаиваю - каждый др..ит как сам хочет :) А я давно на .net переехал.

Ответить

Номер ответа: 50
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #50 Добавлено: 28.05.09 00:43
))) Ну, нет - нет у меня такой задачи обвинять кого то или защитить VB6 и в любом случае диалог был познавательный, при этом я благодарен и тебе за те выкладки которые ты предоставил аргументируя свою позицию, но в то же время представление о том как работает .Net у тебя отчасти неверные, с другой стороны раз ты без этих знаний обходишься в работе, значит тебе того что ты знаешь и как это понимаешь вполне достаточно. Про MSDN - я интегрировал несколько ресурсов туда, например, codeproject.com - там отличные примеры кода и статьи, а что такое рефлектор?

Ответить

Номер ответа: 51
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #51 Добавлено: 28.05.09 12:58
_Serega пишет:
но в то же время представление о том как работает .Net у тебя отчасти неверные

Позволь поинтерисоваться, в чем именно мои представления неверные?

_Serega пишет:
а что такое рефлектор?

Мда и этот человек дает оценку моим знаниям...

Ответить

Номер ответа: 52
Автор ответа:
 _Serega



Вопросов: 1
Ответов: 43
 Профиль | | #52 Добавлено: 28.05.09 15:31
Скорее оценку твоим незнаниям и это не одно и тоже....

Ответить

Номер ответа: 53
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #53
Добавлено: 28.05.09 15:58
Булочка?

Ответить

Номер ответа: 54
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #54 Добавлено: 28.05.09 15:59
_Serega, пожалуйста не пропадай :)
Еще раз повторю свой вопрос.

В чем по твоему мнению мои предсталвения о .NET неверны?

Мне реально интересно, потому что ты первый человек на митуе который говорит что я что-то не так понимаю в .NET :)

Ответить

Номер ответа: 55
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #55 Добавлено: 28.05.09 16:13
VBD Unit, на этом форуме ценится юмор. Особенно очень тонкий и направленый против других участников форума.

Но твой тупизм не имеет ничего общего к этому, будь добр возьми тетрадку и конспектируй все что мы тут пишем, а к практическим занятиям притсупишь когда будешь к этому готов, потому что ты просто ухудшаешь атмосферу клубного общения

Ответить

Номер ответа: 56
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #56
Добавлено: 28.05.09 16:21
В чем по твоему мнению мои предсталвения о .NET неверны?


В том, что ты считаешь NET - единственной в мире средой разработки программного обеспечения

Ответить

Номер ответа: 57
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #57 Добавлено: 28.05.09 16:44
Arvitaly, я этого нигде не говорил и не считаю так, не нужно обманывать людей

Ответить

Номер ответа: 58
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #58
Добавлено: 28.05.09 16:49
Разве для тебя это не так?

Ответить

Номер ответа: 59
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #59 Добавлено: 28.05.09 17:23
Хочешь об этом поговорить?
PS Уже пополнил ряды псехологов митуя?

Ответить

Номер ответа: 60
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #60
Добавлено: 28.05.09 17:47
Когда люди задают вопрос обычно хотят услышать ответ, что, по логике вещей, и означает разговор

Ответить

Страница: 1 | 2 | 3 | 4 | 5 |

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



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