Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];

Вниз

Правильно ли работаю с потоками?   Найти похожие ветки 

 
antonn ©   (2011-07-27 17:34) [40]


> причем тут с начала, когда если пишешь код [32] то ССЗБ

а если этот код пишет борланд?

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


 
antonn ©   (2011-07-27 17:40) [41]

Еще один примерчик: у меня программа строит списки, время от времени их пересчитывая, большие списки. И переодически сбрасывает кеш данных на диск. Если при запуске кеш окажется валидным то он будет загружен и пока будет идти перерасчет узер увидит данные за такое-то время сформированные (он и так вообще-то смотрит только данные кеша, который строится на этих вот больших списках, поэтому при старте программы кеш пустой и юзер смотрит в пустой экран).
Так вот мне глубоко пофиг почему не записался кеш, пофиг что там файл был занят, что было реад_онли, что винчестер сглючил или вообще пути для кеша не существует. Ну получу я код ошибки запрета записи на диск, и чего? юзеру это не нужно, а вполне вероятно он не сделает того о чем я его попрошу на основании этой ошибки (дать доступ на запись). А запишется кеш - ну и замечательно. Нет - переживем.


 
Dennis I. Komarov ©   (2011-07-27 17:42) [42]

А еще был приведен довольно неудачный пример, якобы когда это допустимо...


 
antonn ©   (2011-07-27 17:48) [43]


> Dennis I. Komarov ©   (27.07.11 17:42) [42]

какой именно?


 
Dennis I. Komarov ©   (2011-07-27 17:58) [44]

И его? Если юзеру не надо видеть эту ошибку, то не показывай ее, но это не является основанием для того что-бы оставить пустой блок except. Реализуй различные режимы, при которых можно посмотреть некое отладочное окно, дабы после можно было получить действительно "нет доступа". Потому как иначе, кто-нить потом чего-нить оторвет...


 
Dennis I. Komarov ©   (2011-07-27 17:58) [45]


> какой именно?

update


 
antonn ©   (2011-07-27 18:04) [46]


> Dennis I. Komarov ©   (27.07.11 17:58) [45]
>
>
> > какой именно?
>
> update

какой update?


> Реализуй различные режимы, при которых можно посмотреть
> некое отладочное окно, дабы после можно было получить действительно
> "нет доступа".

какое еще окно и кто в него будет смотреть? нет доступа для чего? мы сейчас обсуждаем пример с кешем? так юзеру вообще все равно где там нет доступа, а мне так же все равно есть ли кеш или нет. Если есть - хорошо, но не обязательно, лишний поклон перед юзером. Если нет - ну подождет до первого перерасчета данных, посмотрит на анимацию. Момент не критичный. Более того, в этом примере вообще нет обратной связи, поток вызывается и о нем, по сути, забываем.


 
Игорь Шевченко ©   (2011-07-27 19:12) [47]


> я высказался что такое решение омеет право на жизнь в зависимости
> от ситуации


Конечно имеет. В чужом коде все имеет право на жизнь. В своем я стараюсь обычно игнорировать только те исключения, в безопасности игнорирования которых я уверен.

Исключения-наследники EExternal или EHeapException, например, не игнорируются никогда. Я не уверен, что пишу безупречный код и тем более не уверен, что вызываемый мной сторонний код безупречен. Так пусть лучше сломается с треском.


 
antonn ©   (2011-07-27 19:15) [48]


> Так пусть лучше сломается с треском.

а если служба, никтож не увидит


 
Игорь Шевченко ©   (2011-07-27 21:05) [49]


> а если служба, никтож не увидит


А вот оракл под виндой тоже служба, а при падениях пишет в EventLog и в свой Alert log. Потом есть что почитать.


 
sniknik ©   (2011-07-27 21:13) [50]

> никтож не увидит
в службу поддержки тебя, на вразумление, после будешь знать этого "Никто"... в зеркале брить его будешь.


 
antonn ©   (2011-07-27 21:34) [51]


> в службу поддержки тебя, на вразумление, после будешь знать
> этого "Никто"... в зеркале брить его будешь.

ну не злись, все хорошо :)
речь как раз о том что никто не увидит если это будет мессаджбокс из под system не на декстопе юзера. Ярость глазки залила, это небыло сказано в контексте "все равно никто не увидит" =))


> Игорь Шевченко ©   (27.07.11 21:05) [49]
>
>
> А вот оракл под виндой тоже служба, а при падениях пишет в EventLog и в свой Alert log. Потом есть что почитать.

я так понял что эти эксепшны не обрабатываются и потому вылезают "стандартные" диалоги ошибок?


 
Игорь Шевченко ©   (2011-07-27 21:51) [52]

antonn ©   (27.07.11 21:34) [51]


> я так понял что эти эксепшны не обрабатываются и потому
> вылезают "стандартные" диалоги ошибок?


Если ты мой пост [47] имеешь в виду, то стандартных диалогов не вылезает, потому что на верхнем уровне стоит обработчик необработанных исключений, который пишет журнал ошибок (а для сервисов и/или в EventLog) с трассировкой стека, последними выполненными действиями, еще набором всяких данных, и отсылает, если заказано, письмо со всей этой информацией на указанные адреса. Такой вот Error reporter в миниатюре.

Я имею в виду, что во внутренних процедурах исключения не игнорируются все скопом, а только те, которые в данном участке кода могут быть безболезненно проигнорированы. Неспецифических примеров сходу привести не могу :)


 
Германн ©   (2011-07-28 00:26) [53]

Удалено модератором


 
antonn ©   (2011-07-28 00:30) [54]

Удалено модератором


 
Германн ©   (2011-07-28 00:37) [55]

Удалено модератором


 
Германн ©   (2011-07-28 00:51) [56]

Удалено модератором


 
antonn ©   (2011-07-28 01:23) [57]


> Как заранее знать что критично, а что нет не будучи господом
> богом?

на этапе планирования, разумеется :) когда там ТЗ составляется?


> +1

ты бы прочитал [51], а то "плюсадинишь" и выглядишь глупо :)


 
Германн ©   (2011-07-28 01:30) [58]

Удалено модератором


 
antonn ©   (2011-07-28 02:18) [59]


> Но тоже как любой технарь имею жизненный опыт техподдержки.

а то что sniknik не так понял мою фразу - это не важно? опыт техподдержки гораздо важнее, там важно быстро и точно ответить на вопрос который не задавался, молниеносно объяснить юзеру почему он не прав и что на самом деле у него все работает нормально :) "знаем, плавали"


 
MonoLife ©   (2011-07-28 07:32) [60]

оставьте в покое antonn"a!:)
ТС с опытом поймет в чем был не прав и как нужно делать, а как не рекомендуется.. Для чего-то ж существуют грабли, тяпки & etc ...:)


 
sniknik ©   (2011-07-28 08:13) [61]

Удалено модератором


 
antonn ©   (2011-07-28 11:09) [62]


> необработанный/пустой ексепт с сообщением у юзера..

нужно читать сообщения выше


> или то что ты стебешся отстаивая "возможность" (приводя
> кривые примеры), т.к. "противная сторона" говорит "никогда
> и ни при каких обстоятельствах"...? ну так покажи где она
> это сказала,

[40]
читай возле выделенного, там есть все, там же есть вопрос - можешь ответить на него и написать почему на мои утверждения "что может быть" меня переубеждают "не может". Логическую нить сохраняем :)


 
antonn ©   (2011-07-28 11:18) [63]

ну и включу КО, дабы помочь восстановить логическую цепочку, а то я смотрю некоторые читают только последнюю страницу.
[47] Игорь написал что игронирует те исключения в которых уверен (я в борланде тоже был уверен... :)), и если что - сломается с треском.
[48] если пложение в виде службы то мессаджбокс не увидим, а евентах (если самому ничего не делать дополнительного) будет что-то типа "Не найдено описание для события с кодом ( 0 ) в источнике ( ***** ). Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL с..". Т.е. чтобы уловить причину нужно ее отработать в этом случае. Потому что без try..except (даже пустой) приложение может вообще упасть, и без уведомлений почему она это сделала.
[49] Игорь говорит тоже самое на примере службы оракла - та пишет логи
[50] Господин в ярости блистает красноречием, отквотив [48] О_о
[56] Герман ставит плюсадин. Ты вообще с чем там хотел быть согласен, а?


 
antonn ©   (2011-07-28 11:20) [64]

PS тему в прочее не перенесете?


 
Anatoly Podgoretsky ©   (2011-07-28 11:21) [65]

> antonn  (27.07.2011 16:44:28)  [28]

И в итоге имеем вечное НЕТ и проклятье пользователей или службы поддержки


 
Loginov Dmitry ©   (2011-07-28 11:28) [66]


> Для чего-то ж существуют грабли, тяпки


+1

Понимание приходит с опытом.


 
Anatoly Podgoretsky ©   (2011-07-28 11:28) [67]

> antonn  (28.07.2011 11:20:04)  [64]

Если была твоя тема, то давно уже бы там оказалась, мне проще запретить тебе
писать и справедливо по отношению к другим будет.


 
Dennis I. Komarov ©   (2011-07-28 11:38) [68]


> Понимание приходит с опытом.

Да пускай получает шишки, но зачем других толкать на "заграбленный" путь?


 
sniknik ©   (2011-07-28 11:38) [69]

> читай возле выделенного, там есть все
читаю...
> т.е. что пустой секции ... быть не должно.
что "все" в этом есть?

> там же есть вопрос
а вопрос... т.е. вопрос (там где знак ? в конце предложения)
> Такая логика?
какая логика? и чья? ведь все, что было до этого вопроса ты частично выдумал, частично, извратил. на что отвечать?

вот это и есть, то про что говорил, превращение диалога в срачь, ничего ясного, никаких понятных высказываний только "я это говорил, читайте меня, я гений, скоро опубликуюсь, учитесь толковать мои высказывания, ищите в них тайный правильный смысл... главное запомните, там все правильно, даже если сказано криво, и вами не понято читайте заново".

> меня переубеждают "не может".
не "не может", а "не должно быть", и желательно никогда... и даже если есть ОЧЕНЬ ОЧЕНЬ редкая, с вероятностью стремящейся к 0, крайняя необходимость, не по приведенному тобой, глупому примеру, где ее нет, а реальная, даже не могу придумать где и как оно может возникнуть... но допустим есть. даже в этом случае рекомендуется еще раз подумать... а после наполнить "пустой" блок ексепта подробным комментарием почему он пуст...
если бы "не может" то это была бы синтаксическая ошибка.


 
antonn ©   (2011-07-28 11:46) [70]


> и даже если есть ОЧЕНЬ ОЧЕНЬ редкая, с вероятностью стремящейся
> к 0, крайняя необходимость

значит может, не так ли?


> даже не могу придумать

ключевое. Почему-то тут много спецов которые начинают опираться только на свой опыт, зашоренность мешает. Так же как про окна выше всех, окна не сворачивающиеся по win+d и прочее - везде летят каки что так нельзя, резко так отвечают. Вот как раз опыта мало. И если я (это же я!!! да я!..) не могу придумать - то этого нет. Как в детском садике - "Я в домике!" :)


> если бы "не может" то это была бы синтаксическая ошибка.

кавычки


> а после наполнить "пустой" блок ексепта подробным комментарием
> почему он пуст...

и что изменит комментарий в блоке в работающей программе? речь идет не о комментировании, а не о сообщении кому либо кода ошибки


 
Dennis I. Komarov ©   (2011-07-28 11:52) [71]

"Ты что, дальтоник, Скрипач — зелёный цвет от оранжевого отличить не можешь?" (C)


 
sniknik ©   (2011-07-28 12:01) [72]

> Почему-то тут много спецов которые начинают опираться только на свой опыт, зашоренность мешает.
про него и спрашивали, опыт. ты еще "теме"? перечитай вопрос.

а не придуманные ситуации, которых в принципе не должно быть.

не "зашорен"? ну так приведи пример когда это РЕАЛЬНО необходимо.

> и что изменит комментарий в блоке в работающей программе? речь идет не о комментировании
отношение к тебе... возможно спасет от увольнения. ну после того как из-за твоих "тараканов" отдел поддержки пару месяцев потеряет, а фирма пару тройку клиентов...
если там будет действительно что-то серьезное, и по другому никак, написано, и эксперт с этим согласится.
> а не о сообщении кому либо кода ошибки
вообще претензии к тебе не из-за "сообщения кому либо", а из-за сокрытия факта глюка пустым ексептом... разница однако. если не видишь ее, да еще и упорно отрицаешь...  ну не о чем с тобой больше говорить.


 
sniknik ©   (2011-07-28 12:04) [73]

> ну так приведи пример когда это РЕАЛЬНО необходимо.
хотя... выдуманный пример в этой теме будет офтопиком. приводи реальный, из опыта... и не боись, мы тебя из-за этого в зашоренности обвинять не будем.


 
Игорь Шевченко ©   (2011-07-28 12:12) [74]

Предлагаю всем воюющим сторонам внимательно прочитать
http://delphikingdom.com/asp/viewitem.asp?catalogid=1392
после чего воевать с аргументами.


 
antonn ©   (2011-07-28 12:15) [75]


>
> а не придуманные ситуации, которых в принципе не должно
> быть.

[41] реальная ситуация


 
antonn ©   (2011-07-28 12:24) [76]

ладно, с позволения я тот пост сюда перенесу, чтобы на одной странице был и поближе:
Еще один примерчик: у меня программа строит списки, время от времени их пересчитывая, большие списки. И переодически сбрасывает кеш данных на диск. Если при запуске кеш окажется валидным то он будет загружен и пока будет идти перерасчет узер увидит данные за такое-то время сформированные (он и так вообще-то смотрит только данные кеша, который строится на этих вот больших списках, поэтому при старте программы кеш пустой и юзер смотрит в пустой экран).
Так вот мне глубоко пофиг почему не записался кеш, пофиг что там файл был занят, что было реад_онли, что винчестер сглючил или вообще пути для кеша не существует. Ну получу я код ошибки запрета записи на диск, и чего? юзеру это не нужно, а вполне вероятно он не сделает того о чем я его попрошу на основании этой ошибки (дать доступ на запись). А запишется кеш - ну и замечательно. Нет - переживем.

Поподробнее: в конфигурации программы указаны некоторые объекты (сервер pos-терминалов), программа загружает этот список серверов, коннектится на каждый, вытягивает списки самих pos-терминалов, опрашивает их, записывает результат обработки в результирующий список (путь будет list2). Переодически повторяет процедуру, сама она может занимать от 5 до 15 минут (в зависимости от кол-ва просматриваемых серверов).
Пользователь со стороны gui смотрит как раз результат обработки, причем работа с этой программой не является постоянной его деятельностью, а по необходимости (как раз для техподдержки, ага).
Этот list2 я иногда выгружаю в файловый кеш, дабы после перезапуска программы я мог загрузить этот кеш (если он валидный - по времени и структуре не "устарел") чтобы пользователь мог наблюдать результаты предыдущей проверки, а не смотреть в пустые окна ожидая пока пройдет первая обработка. Так вот этот пункт - не обязательный, и введен лишь как мелкое удобство для пользователя. Если я не смогу сохранить кеш - никто не умрет, пустой экран при перезапуске программы с уведомлением что идет перерасчет данных является нормальным. Однако если там что нибудь отобразится - хорошо.
Запись в файл идет в отдельном потоке, и этот поток никак не должен повлиять на работу сервиса в целом. Код ошибки мне не нужен, потому стоит try..except с пустой секцией обработки исключения.


 
sniknik ©   (2011-07-28 12:31) [77]

> Предлагаю всем воюющим сторонам внимательно прочитать
читал, и даже частично использую... могу дополнить - ексепты indy (не вдаваясь в обсуждение их самих) - EIdHTTPProtocolException, и ADO (если нужны полные "трассируюшие" ексепты от много командных скриптов) требуют особой обработки (по ссылке не разбирается) если хотим полную информацию, на ексепт с пустым месейджем например.

> [41] реальная ситуация
это не ситуация, это дурость, это ты почему то решил что юзеру не хочется видеть данные, а хочется смотреть в пустой экран. но как только кто-то обратится в поддержку с требованием "сделать нормально, вон у Васи все показывает", так поддержка тебя и проклянёт.


 
antonn ©   (2011-07-28 12:41) [78]


> это ты почему то решил что юзеру не хочется видеть данные,
>  а хочется смотреть в пустой экран.

а еще юзеру не хочется работать, хочется пить пиво и временами рыжую бабу.
по существу еще что нибудь есть что сказать?


> но как только кто-то обратится в поддержку с требованием
> "сделать нормально, вон у Васи все показывает", так поддержка
> тебя и проклянёт.
>

этой системой и пользуется техподдержка. это вебсервер, у всех показывает одно и то же. данное поведение - регламентировано.


 
sniknik ©   (2011-07-28 12:58) [79]

> по существу еще что нибудь есть что сказать?
в службу поддержки тебя, на вразумление...

> этой системой и пользуется техподдержка. это вебсервер, у всех показывает одно и то же. данное поведение - регламентировано.
это как раз тот частный "зашоренный" случай, о чем ты нас упрекаешь? немногим отличается от домашней поделки, где точно не нужно ничего, т.к. сам не используешь, а если что есть исходники.


 
sniknik ©   (2011-07-28 13:00) [80]

вообще хорошие аргументы, если что, то "а мне это не нужно", хотя рассуждения до этого были глобальными, и советы тоже.



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.11.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.64 MB
Время: 0.007 c
2-1311651490
Девелопер
2011-07-26 07:38
2011.11.20
В bat-файле вывести результат команды в переменную


2-1311793235
Drowsy
2011-07-27 23:00
2011.11.20
При уничтожении модуля данных возникает AV.


1-1273589288
guest
2010-05-11 18:48
2011.11.20
Закорючки в Excel


3-1266501690
Sergey2
2010-02-18 17:01
2011.11.20
переменная в секции From


15-1311712200
Юрий
2011-07-27 00:30
2011.11.20
С днем рождения ! 27 июля 2011 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский