Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1257179327
Sergey Masloff
2009-11-02 19:28
2010.01.03
Ищу утилиту для поиска дубликатов. Нужен совет


2-1257917183
Tornado
2009-11-11 08:26
2010.01.03
Как разрешить ввод только заглавных букв?


2-1258126527
zlo
2009-11-13 18:35
2010.01.03
Методы в record


1-1232385856
Илья_
2009-01-19 20:24
2010.01.03
Рисование картинки из ImageList методом StrechDraw


15-1257230908
Дмитрий С
2009-11-03 09:48
2010.01.03
Как отловить изменение location.hash (JS,XHTML)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский