Форум: "Прочее";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
ВнизСантехники от программирования - нужны ли они ? Найти похожие ветки
← →
GDI+ (2009-11-05 19:56) [80]try
...
except end;
надо сразу вешать за все выступающие части, если не написан подробный комментарий, почему в данном богоизбранном участке кода все без исключения исключения (пардон за тавтологию) должны игнорироваться
У меня такое в самодельном логере ошибок написано(до эврика лог), который использовался для логирования ошибок. Тоесть в данном случае мне не важно почему произошла ошибка, так как в данном случае или халт программы с выодом сообщения пользователю или просто игнорировать. Я выбрал второе.
← →
Демо © (2009-11-05 20:06) [81]
> @!!ex © (05.11.09 17:26) [61]
> > [59] Демо © (05.11.09 17:10)
>
> Ага. А переход через проезжую часть вместо пешеходного говорит
> о смелости, знании правил и о том, что человек не следует
> тупо авторитетам... ЛОЛ.
> ПРавила рождаются не благодаря авторитетам, а из вполне
> жизненных проблем.
> Использование goto не оправданно в большинстве случае.
Так значит в МЕНЬШИНСТВЕ случаев goto всё-же оправдан?
Может тогда приведёшь примеры - где это может произойти?
"Правила дорожного движения" - руководство к беспрекословным дейстиям. Ты их не припутывай сюда.
А вот к мнению авторитетов надо критически относиться. Лучше сначала собственной головой подумать, а потом послушать.
← →
Демо © (2009-11-05 20:07) [82]
> ПРавила рождаются не благодаря авторитетам, а из вполне
> жизненных проблем.
PS.
Нет такого правила - "Нельзя использовать GOTO"
← →
@!!ex © (2009-11-05 20:12) [83]Прочитай внимательнее мои посты. Пока не вижу смысла писать что-то еще, если то что написано не прочитано.
← →
Anatoly Podgoretsky © (2009-11-05 20:21) [84]> Jeer (05.11.2009 17:55:09) [69]
Ну тут уже не до GOTO
← →
Mystic © (2009-11-05 20:28) [85]Ну например как-нить так использую goto:
HRESULT STDMETHODCALLTYPE CExtension::Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
{
FreeFileList();
if (!IsEnabled()) return E_INVALIDARG;
FORMATETC fmt = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
STGMEDIUM stg = { TYMED_HGLOBAL };
HDROP hDrop = NULL;
HRESULT hr = E_INVALIDARG;
if (FAILED(pdtobj->GetData(&fmt, &stg))) return E_INVALIDARG;
hDrop = (HDROP)GlobalLock(stg.hGlobal);
if (hDrop == NULL) goto Done;
FileCount = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
if (FileCount == 0) goto Done;
FileList = new CFileName[FileCount];
for (UINT i=0; i<FileCount; ++i)
if (DragQueryFile(hDrop, i, FileList[i], MAX_PATH) == 0) goto Done;
hr = S_OK;
Done:
if (hr != S_OK) FreeFileList();
if (hDrop != NULL) GlobalUnlock(stg.hGlobal);
ReleaseStgMedium (&stg);
return hr;
}
← →
Демо © (2009-11-05 20:34) [86]
> @!!ex © (05.11.09 20:12) [83]
> Прочитай внимательнее мои посты. Пока не вижу смысла писать
> что-то еще, если то что написано не прочитано.
Которые твои посты? Их и было-то всего один с существенным высказыванием - тот, который я процитировал.
А GOTO вполне полезны (может это даже почти единственная польза от их использования) при большой вложенности условных операторов.
И это давно всем известно.
← →
Inovet © (2009-11-05 20:35) [87]> [0] XXL (04.11.09 14:36)
См ответ в посте 550 в ветке о поэзии
← →
oxffff © (2009-11-05 21:39) [88]
> Игорь Шевченко © (05.11.09 17:21) [60]
> Alkid © (05.11.09 16:49) [58]
>
> У меня мнение простое - исключение должно говорить о ситуации
> в программе, для которой программист не предусмотрел штатной
> обработки.
>
> Кстати, за код вида
> try
> ...
> except end;
>
> надо сразу вешать за все выступающие части, если не написан
> подробный комментарий, почему в данном богоизбранном участке
> кода все без исключения исключения (пардон за тавтологию)
> должны игнорироваться
Помнится вы были крайне категоричны, что пустой except end - это зло.
И мои примеры ингорировали. :)
Ветка была горячая, я еще и бан получил.
Теперь вы все же более благосклонны. Подскажите что заставило Вас адаптировать ваше мнение на более лояльное?
Неужели опыт пустого except end. :)
← →
RWolf © (2009-11-05 21:52) [89]
> Ну например как-нить так использую goto:
goto здесь необязателен. EAbort к этому исходнику подойдёт, как родной.
Я ещё практикую конструкциюrepeat
...
if ... then break;
...
if ... then break;
...
until false;
← →
RWolf © (2009-11-05 21:53) [90]кхм... until true, конечно (С++ глаза застит)
← →
Игорь Шевченко © (2009-11-05 23:17) [91]oxffff © (05.11.09 21:39) [88]
Я и сейчас категоричен, ничего не изменилось.
Если не будет написано веского комментария, почему в этом участке кода жизненно необходимо давить исключения, от EOutOfMemory до EAccessViolation
← →
oxffff © (2009-11-05 23:46) [92]
> Игорь Шевченко © (05.11.09 23:17) [91]
1. Исключения вообще могут наследоваться от Tobject.
2. Исключения могут быть внешними
3. Эти неизвестные исключения могут быть в самом логере, но не должны затрагивать остальную часть программы.
Она не должна вообщем с треском как вы предпочитаете.
А я рад вообщем что каждый при своем мнении, когда буду в Москве будет время подискутировать и на эту тему тоже при употреблении крепких напитков, если вы конечно не возражаете.
← →
Piter © (2009-11-05 23:48) [93]Игорь Шевченко © (05.11.09 23:17) [91]
Если не будет написано веского комментария, почему в этом участке кода жизненно необходимо давить исключения
а я приводил отличный, на мой взгляд, пример.Window: OleVariant;
...
try
Window.before_print_script;
except ;
end;
Это идет работа с TWebBrowser. После отображения странички и перед печатью, в документе исполняется скрипт before_print_script. Если в тексте HTML страницы есть такой JavaScript - то он вызовется, там может быть прописано некоторое окончательное форматирование страницы перед печатью. Если же такой скрипт внутри страницы не объявлен - будет исключение OLE, типа нет такого метода.
И почему не нужно давить это исключение? Оно абсолютно не информативное. Отсутствие такого JavaScript"а внутри страницы - абсолютно нормальное явление, это уже зависит от разработчика шаблона страницы. Если ему нужно с помощью JS что-то отформатировать - пусть использует, не нужно - так не нужно.
Единственное, что могли сказать абсолютные противники "пустого" except - мол, надо каким-то образом проверять ДО вызова - а есть ли сценарий с таким именем или нет. Наверняка, это проверить как-то можно. Но я не понимаю - зачем? Логику вывернули.
Было "Нет такого примера, когда бы был оправдан пустой try..except", а стало "Try..except не должен быть пустой, поэтому надо любым способом избегать пустого try..except". При действии последней логики да, можно поработать, подумать, ввести проверку и обойтись без try..except
← →
Игорь Шевченко © (2009-11-06 01:12) [94]oxffff © (05.11.09 23:46) [92]
> подискутировать и на эту тему тоже при употреблении крепких
> напитков, если вы конечно не возражаете.
Крепких - возражаю, пиво - не возражаю :)
Что касается исключений - в прошлой дискуссии я писал, что теряется информация не только о том, что именно плохое произошло, но и о том, что вообще что-то плохое произошло. Здесь все зависит от автора и лежит на его совести, согласен он на такую потерю, или нет. Для будущей подержки стоит написать, что автор изначально предполагает, что игнорирование всх без исключения исключений (опять же, пардон за тавтологию) в этом участке не принесет вреда ни в настоящем, ни в будущем.
Разумеется, я вроде не являюсь цербером, ОТК и нормоконтролем в одном лице для всех программистов, каждый волен поступать, как ему угодно.
← →
Amoeba © (2009-11-06 01:35) [95]А как вам такой шедевр с goto?
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=73729
← →
Игорь Шевченко © (2009-11-06 02:06) [96]Amoeba © (06.11.09 01:35) [95]
да там не только goto
← →
Германн © (2009-11-06 02:23) [97]
> Крепких - возражаю, пиво - не возражаю :)
>
Из некрепких - только Джин-тоник или вермут (только не "советский"). Если помнишь, был магазин "Балатон" рядом с м.Университет. Там порой можно было купить венгерский вермут. Вот оттуда и моя любовь к вермутам.
Моё кредо после "эпохи пива"! :)
← →
Inovet © (2009-11-06 02:32) [98]> [97] Германн © (06.11.09 02:23)
> был магазин "Балатон"
А что там теперь?
← →
Германн © (2009-11-06 02:39) [99]
> Inovet © (06.11.09 02:32) [98]
>
> > [97] Германн © (06.11.09 02:23)
> > был магазин "Балатон"
>
> А что там теперь?
>
А фиг его знает. Я про него совсем забыл (я не него совсем забил - так нынче принято говорить?).
Тут ещё хуже, чем в советское время.
Как не искал, до сих пор не нашел постоянного "поставщика" хорошего вермута. Везде Мартини!
← →
MonoLife © (2009-11-06 04:13) [100]При упоминании goto и(или) спиртных напитков происходит всеобщее радостное оживление и все забы(и)вают что было вначале:))
← →
Anatoly Podgoretsky © (2009-11-06 12:11) [101]> Игорь Шевченко (05.11.2009 23:17:31) [91]
Например, Сервер и он не должен падать ни в каком случае, кроме старта.
← →
asail © (2009-11-06 12:23) [102]
> Anatoly Podgoretsky © (06.11.09 12:11) [101]
Ну, там тоже try..except не пустой должен быть - как минимум писать в лог...
У меня пустой try..except, например, в записи логов используется. Как-то так:
procedure WriteLog(const _sMsg: string);
begin
try
. . .
пишем лог в файл
. . .
except
end;
end;
В случае ловли исключения, делать с ним все равно нечего... А ловить надо...
← →
Anatoly Podgoretsky © (2009-11-06 12:46) [103]> asail (06.11.2009 12:23:42) [102]
Конечно в процедуры записи в лог, этот блок должен быть пустым.
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
Память: 0.65 MB
Время: 0.01 c