Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Тем, кто утверждает, что тело except не должно быть пустым   Найти похожие ветки 

 
Игорь Шевченко ©   (2009-01-17 21:36) [160]

vuk ©   (17.01.09 20:59) [152]


> А куда относится AV при форматировании сообщений системного
> журнала? Эта ошибка не может быть исправлена программистом


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

oxffff ©   (17.01.09 20:56) [150]


> А внешние ошибки воспринимать как данные - это заниматься
> самообманом.


Что такое "внешняя ошибка" по твоей терминологии ?


 
oxffff ©   (2009-01-17 21:44) [161]


>Игорь Шевченко ©   (17.01.09 21:36) [160]
> Что такое "внешняя ошибка" по твоей терминологии ?


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

\\
Реакция на ошибку определяется не ее типом(данные, программист, внешняя), а критичностью компонента в котором она произошла, и возможностью отказаться от этого компонента вовсе(присваивание значения по умолчанию, игнорирование невозвращенного результата).


 
Игорь Шевченко ©   (2009-01-17 21:46) [162]

oxffff ©   (17.01.09 21:44) [161]


> Эта ошибка природу, которой установить невозможно


Не понял, поясни. Электричество кончилось - это внешняя ошибка ? Альфа-частица пролетела сквозь планку памяти и вызвала распад битов - это внешняя ошибка ?


> все генерируемые ею исключения отсутствуют в общем словаре


что такое "общий словарь" ?


 
oxffff ©   (2009-01-17 22:04) [163]


> Игорь Шевченко ©   (17.01.09 21:36) [160]
> vuk ©   (17.01.09 20:59) [152]
>
>
> > А куда относится AV при форматировании сообщений системного
>
> > журнала? Эта ошибка не может быть исправлена программистом
>
>
> Как это не может быть исправлена программистом - может быть
> исправлена программистом. Например, вылавливанием этого
> AV, пардон, протоколированием его, и продолжением разбора
> следующей части.


А как вы собстенно узнате характер исключения, если это будет для внешнего исключения и если это не СBuilder

 cDelphiException    = $0EEDFADE;
cNonDelphiException = $0EEDFAE4;
 cCppException       = $0EEFFACE; { used by BCB }

По связке External Exception + GetlastError?
Если Error Code - 5. :)
А как сделать вывод куда рыть в общем случае?

А что есть еще потенциально опасные недокументированные исключения внешних компонент?
Не считаете ли вы, что если ничего не известно, и нет 100% гарантии, но ее нужно обеспечить для оставшейся части приложения, то пустой except end - это решение вопроса?


 
vuk ©   (2009-01-17 22:12) [164]

to Игорь Шевченко ©   (17.01.09 21:36) [160]:
>Как это не может быть исправлена программистом - может быть исправлена
>программистом. Например, вылавливанием этого AV, пардон,
>протоколированием его, и продолжением разбора следующей части.
Может мы немного разошлись в терминологии, но как мне кажется, это не исправление, а обработка ошибки. Данные, они как были кривыми, так ими и останутся.


 
Игорь Шевченко ©   (2009-01-17 22:25) [165]

vuk ©   (17.01.09 22:12) [164]


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


Да, конечно, обработка. Об исправлении данных речь в большинстве случаев не ведется, хотя встречаются и такие ситуации, где ошибочные данные могут быть исправлены. Но эта ошибка (с логом) аналогична той, что некто ввел в цифровое поле вместо 11234 значение 112ЗЧ (на мой такой простой взгляд)

oxffff ©   (17.01.09 22:04) [163]


> Не считаете ли вы, что если ничего не известно, и нет 100%
> гарантии, но ее нужно обеспечить для оставшейся части приложения,
>  то пустой except end - это решение вопроса?


Извини, это пустой разговор. Я могу еще раз привести в пример систему Windows - при ошибке в режиме пользователя она выдает сообщение об ошибке и продолжает работать, а при ошибке в режиме ядра валится с синим экраном.
Sapienti Sat


 
oxffff ©   (2009-01-17 22:57) [166]


> Игорь Шевченко ©   (17.01.09 21:46) [162]
> oxffff ©   (17.01.09 21:44) [161]


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


Ваши примеры некорректны, такого рода исключения вполне известны. Будут сгенерированы соответствующие исключания процессора, которые Delphi замапит через const ExceptMap в sysutils.
Я говорю о EExternalException.

Но тем не менее работать дальше надо, может все таки пустой try except?


>
> что такое "общий словарь" ?


Это все типы исключений и кодов возвратов, которые известны вашему приложению(т.е. вам). Не EExternalException, и не исключения delphi опеределенные во внешнем DLL.


 
oxffff ©   (2009-01-17 23:13) [167]


> Игорь Шевченко ©   (17.01.09 22:25) [165]
> Извини, это пустой разговор. Я могу еще раз привести в пример
> систему Windows - при ошибке в режиме пользователя она выдает
> сообщение об ошибке и продолжает работать, а при ошибке
> в режиме ядра валится с синим экраном.
> Sapienti Sat


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

Вторые - приложения пользователя раздельные зоны ответственности с режимом ядра. Система просто не пропускает их далее уже за сам механизм SEH.

Как пустой разговор?

Есть конкретно постановка задачи [137].
Есть решение с пустым except end там же.

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


 
Sergey Masloff   (2009-01-17 23:21) [168]

Про пустой try...except  И почти с плагинами
Есть некоторое приложение. Висит слушает сокет а при подключении клиента поднимает COM объект реализующий этот интерфейс и позволяет клиенту его использовать. Конечно он ничего не знает о таких объектах - "плагинах". Я так полагаю, его разработчики тоже подумали - мало ли кто будет плагины писать - давай подстрахуемся будем исключения гасить.
 Как результат имеем ситуацию (реальная) массовые сигналы от пользователей - НЕ РАБОТАЕТ. Смотрим машину - загрузка процессора 20% свободной памяти несколько гигов, в логе никаких ошибок интерфейс самого приложения показывает состояние нормальной рабочей нагрузки. Только НИЧЕГО не работает и нет НИКАКИХ признаков что это не работает (кроме пользователей которых несколько тысяч и у которых от работоспособности системы зависят их доходы).
 Программист конечно молодец - его программа работает. Что делать тем кто ее эксплуатирует? Круглосуточно сидеть на телефоне?
 Кстати перезапуск программы решает проблему. На некоторое время.


 
Игорь Шевченко ©   (2009-01-17 23:23) [169]

oxffff ©   (17.01.09 23:13) [167]


> Есть конкретно постановка задачи [137].
> Есть решение с пустым except end там же.


Это неграмотное решение, потому что в случае возникновения ошибки информация о ней пропадает и о причине можно только гадать.


 
oxffff ©   (2009-01-17 23:24) [170]


> Sapienti Sat


Да, да, спагетии мудрому понятны.


 
Anatoly Podgoretsky ©   (2009-01-17 23:25) [171]

> oxffff  (17.01.2009 21:30:39)  [159]

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


 
Игорь Шевченко ©   (2009-01-17 23:26) [172]

oxffff ©   (17.01.09 23:13) [167]


> Это и есть разные зоны ответственности компонентов.
> Одни внешние имеют общую с  режимом ядра зону ответственности.
>
>
> Вторые - приложения пользователя раздельные зоны ответственности
> с режимом ядра. Система просто не пропускает их далее уже
> за сам механизм SEH.


Речь не идет о механизмах, речь идет о парадигме. Мало ли где какие механизмы - парадигма одна - об ошибках надо информировать тем или иным способом, соответственно об ошибках в данных - произвольным путем, по выбору, об ошибках в программе - лучше всего громким треском.
Плагины и прочие внешние компоненты целесообразно рассматривать как данные.


 
oxffff ©   (2009-01-17 23:31) [173]


> Игорь Шевченко ©   (17.01.09 23:23) [169]
> oxffff ©   (17.01.09 23:13) [167]
>
>
> > Есть конкретно постановка задачи [137].
> > Есть решение с пустым except end там же.
>
>
> Это неграмотное решение, потому что в случае возникновения
> ошибки информация о ней пропадает и о причине можно только
> гадать.


Почему неграмотное? Где аргументы?

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

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

for task in Tasks do
begin
 try
   try
   task.execute;
   except
   ExternalLoger.Inform("Task Error");
   end;
except
end;
end;
Если


 
KilkennyCat ©   (2009-01-17 23:36) [174]


> Игорь Шевченко ©   (17.01.09 23:23) [169]
> Это неграмотное решение, потому что в случае возникновения
> ошибки информация о ней пропадает и о причине можно только
> гадать.
>


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


 
oxffff ©   (2009-01-17 23:40) [175]


> Sergey Masloff   (17.01.09 23:21) [168]
>Игорь Шевченко ©   (17.01.09 23:26) [172]


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

Вопрос вы обертываете логирование в SEH или нет?
Или позволяете рухнуть приложению при крахе логирования?

Я еще раз повторяю логирование внешнее.
Нет никакого внутреннего логирования поскольку:

1. Логирование внешнее.
2. Отлавливаемые исключения неизвестны

Теперь я бы хотел получить более информативное разъяснение о неграмотном решении. А лучше с примером.
Слова свои нужно подтверждать. :)


 
Игорь Шевченко ©   (2009-01-17 23:43) [176]

oxffff ©   (17.01.09 23:31) [173]


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


Для меня недостаточно условий для приведения решения задачи, но в твоем коде я вижу два недостатка:

первый: если в методе task.execute возникнет исключение, то информация будет только о факте ошибки вообще.
второй: если в методе task.execute возникнет исключение и в методе ExternalLogger.Inform возникнет исключение, то информации даже о факте ошибки не будет.

Кому нужна такая программа - я не в курсе.


 
Игорь Шевченко ©   (2009-01-17 23:44) [177]

KilkennyCat ©   (17.01.09 23:36) [174]


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


На этот случай придуман оператор if :)


 
Sergey Masloff   (2009-01-17 23:47) [178]

oxffff ©   (17.01.09 23:40) [175]
Журнал один. Не удалось в него писать - рушимся.

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


 
oxffff ©   (2009-01-17 23:48) [179]


> Игорь Шевченко ©   (17.01.09 23:26) [172]
> oxffff ©   (17.01.09 23:13) [167]
> Речь не идет о механизмах, речь идет о парадигме. Мало ли
> где какие механизмы - парадигма одна - об ошибках надо информировать
> тем или иным способом, соответственно об ошибках в данных
> - произвольным путем, по выбору, об ошибках в программе
> - лучше всего громким треском.
> Плагины и прочие внешние компоненты целесообразно рассматривать
> как данные.


Дык весь вопрос в том, что информацию пользователю попадает через логирование, которое в данном случае внешнее. Как быть если оно киркнулось, как сообшить пользователю о сбое. Можно попробовать так.
Суть не меняется.

try
try
  try
  task.execute;
  except
  ExternalLoger.Inform("Task Error");
  end;
except
 ExternalLoger.Inform("Logger crash);
end;
except
end;

У вас нет возможности сообщить пользователю о сбое логера. Пользователь видет только свой лог.


 
KilkennyCat ©   (2009-01-17 23:50) [180]


> Игорь Шевченко ©   (17.01.09 23:44) [177]

Да, если я предполагаю, что такая ситуация будет вечно. В противном случае, я могу изначально написать "полуграмотно".

На мой взгляд, все-таки грамотность решения во многом определяется ТЗ и стоимостью.
Грамотностью разработчика, конечно, тоже :)


 
Игорь Шевченко ©   (2009-01-17 23:53) [181]

oxffff ©   (17.01.09 23:48) [179]


> Дык весь вопрос в том, что информацию пользователю попадает
> через логирование, которое в данном случае внешнее. Как
> быть если оно киркнулось, как сообшить пользователю о сбое


Как сообщить пользователю о том, что компьютер, на котором выполнялась программа, перезагрузился из-за ошибки другого приложения ? Ответив на этот вопрос, ты получишь механизм оповещения о неисправном логгере


 
Игорь Шевченко ©   (2009-01-17 23:57) [182]

KilkennyCat ©   (17.01.09 23:50) [180]


> Да, если я предполагаю, что такая ситуация будет вечно


Я не совсем понял, какая ситуация имеется в виду ? Ситуация, что надо игнорировать ошибки о черных ящиков ?

Я о другом - народ настолько увлекся исключительными ситуациями, что забыл об их изначальном предназначении - информировать о том, что произошла ситуация, не предусмотренная алгоритмом. Поэтому считается, что можно втихую проигнорировать АБСОЛЮТНО ЛЮБУЮ ситуацию пустым блоком except end и продолжать, как ни в чем не бывало.


 
oxffff ©   (2009-01-17 23:59) [183]


> Игорь Шевченко ©   (17.01.09 23:43) [176]
> oxffff ©   (17.01.09 23:31) [173]
>
>
> > Теперь вопрос вам, как вы не зная реализации логера и
> его
> > природу(DLL) можете обработать его ошибки?
> > И привидите грамотное с вашей точки зрения решение, сохранив
>
> > условие задачи.
>
>
> Для меня недостаточно условий для приведения решения задачи,
>  но в твоем коде я вижу два недостатка:


Не забываем добавлять IMHO.


>
> первый: если в методе task.execute возникнет исключение,
>  то информация будет только о факте ошибки вообще.


Этого может вполне достаточно.
Однако пример был упрощен.
Можно расширить контракт, сохранив обобщенный подход.
try
 try
 Task.Start;
 except
    try
    ErrorInfo:=Task.GetlastError;
    except
    ErrorInfo:="Task Unknown Error";
    end;

 Log.Inform("ErrorInfo);
 end;
except
end


> второй: если в методе task.execute возникнет исключение
> и в методе ExternalLogger.Inform возникнет исключение, то
> информации даже о факте ошибки не будет.


Тут вы IMHO лукавите ?
Если при исключении в вашем логере будет неустранимый сбой, как пользователь об этом узнает? Где здесь разница между внутренним и внешним логером?

Да и оборочиваете ли вы вызов логгера в try?


 
oxffff ©   (2009-01-18 00:18) [184]


> Игорь Шевченко ©   (17.01.09 23:53) [181]
> oxffff ©   (17.01.09 23:48) [179]
>
>
> > Дык весь вопрос в том, что информацию пользователю попадает
>
> > через логирование, которое в данном случае внешнее. Как
>
> > быть если оно киркнулось, как сообшить пользователю о
> сбое
>
>
> Как сообщить пользователю о том, что компьютер, на котором
> выполнялась программа, перезагрузился из-за ошибки другого
> приложения ? Ответив на этот вопрос, ты получишь механизм
> оповещения о неисправном логгере


Дык здесь и есть камень приткновения.
Вы утверждаете что решение неграмотное. Неграмотность как я понимаю с вашего IMHO состоит в том, не обрабатывается ситуация сбоя логера.
Дык, если внутренний известный логгер вам сбойнул, у вас есть возможность обработать его исключения, коды, ошибок.
И возможно даже его восстановить.
Если его восстановить нельзя (либо проглотить ошибку, либо с треском).
Но тогда данная ситуация ничем не отличается о обобщенного решения.
И я могу также сказать, что подобное ваше решение на внутреннем логере кривое, поскольку пользователь не узнает о сбое. Не так ли?

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

Но!!! Сохранив условия задачи о неизвестном логере, сделать вы это не сможете. Поскольку сами подтвердили в [181].

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

P.S. Повторю свою позицию для тех кто не видел

Ошибки для меня существуют. И поверь, что я не отстаиваю точку зрения что except end должен быть пустым всегда. Более того я и пишу, как все мои оппоненты, либо информативные коды возвратов, либо дерево классов исключений с проверкой в except end.

Я отстаиваю точку зрения, что может быть и except end пустым (а это между прочим тема начальной беседы) и привел контректный пример.


 
Игорь Шевченко ©   (2009-01-18 00:26) [185]

oxffff ©   (17.01.09 23:59) [183]


> Не забываем добавлять IMHO.


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

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


 
vuk ©   (2009-01-18 00:37) [186]

to Игорь Шевченко ©   (18.01.09 00:26) [185]:
>Я в данном случае согласен с Сергеем Масловым - не удалось записать в
>журнал, надо вылетать с треском и информировать пользователя тем же
>самым способом, что и при перезапуске компьютера из-за ошибки другого
>приложения.
Я бы попробовал вместо вылета для начала в системный журнал начать писать, он достаточно надежен. И вот если и этим тоже облом, то тогда уже точно хана.


 
oxffff ©   (2009-01-18 00:41) [187]


> Игорь Шевченко ©   (18.01.09 00:26) [185]
> oxffff ©   (17.01.09 23:59) [183]
>
>
> > Не забываем добавлять IMHO.
>
>
> Нет, без всякого IMHO - это вполне объективные недостатки,
>  либо, как я уже говорил, исходных данных для построения
> алгоритма недостаточно.


Подождите вы сказали, именно о неграмотном решении.
Значит вы знаете как грамотно разрешить ситуацию, которая в моей реализации упрощенного обобщенного способа не разрешается.
Тогда я жду, как вы разрешите ситуацию с информированием пользователя через логер информацию о сбое самого логера.

Есть принципиальная разница.

Между вашими словами, что я привел неграмотное решение(т.е фактически указав, что я не профессионал, но пока не аргументировав контрпримером), и тем, что не существует способа решить эту задача при данных условиях(конкретно неизвестный логер), наделив пользователя 100% гарантией уведомления о всех ошибках, есть огромная разница.
Т.е. по факту вы здесь не правы.

Либо признайте, что погорячились, либо привидите пример.

А то знаете ли хорошего человека просто так обозвали.

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


А почему должны страдать другие задачи? Если есть возможность их исполнять. Или вы всех неустранимых ошибках логера, который выполняет для большинства задач второстепенную работу(естественно это не СУБД), рушите все приложение.


 
Игорь Шевченко ©   (2009-01-18 00:59) [188]

vuk ©   (18.01.09 00:37) [186]


> Я бы попробовал вместо вылета для начала в системный журнал
> начать писать, он достаточно надежен. И вот если и этим
> тоже облом, то тогда уже точно хана.


Собственно, мы так и делаем

oxffff ©   (18.01.09 00:41) [187]

"Для меня недостаточно условий для приведения решения задачи, но в твоем коде я вижу два недостатка:" (с) пост [176]
Далее эти недостатки подробно разобраны по приведенному примеру кода.


 
oxffff ©   (2009-01-18 01:05) [189]


> Игорь Шевченко ©   (18.01.09 00:59) [188]
> oxffff ©   (18.01.09 00:41) [187]
>
> "Для меня недостаточно условий для приведения решения задачи,
>  но в твоем коде я вижу два недостатка:" (с) пост [176]
> Далее эти недостатки подробно разобраны по приведенному
> примеру кода.


Я честно говоря ожидал, что вы мудрее по жизни.
А вы до последнего не хотите признавать, что погорячились.
Вы же прекрасно понимаете, то что вы указали в [176] является постановкой и следствием задачи и никак не связно с моим решением.
Мне жаль, что вы как человек не можете этого признать. :(


 
Игорь Шевченко ©   (2009-01-18 01:13) [190]

oxffff ©   (18.01.09 01:05) [189]


> Я честно говоря ожидал, что вы мудрее по жизни.


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


 
Юрий Зотов ©   (2009-01-18 01:28) [191]

> Игорь Шевченко ©   (18.01.09 01:13) [190]

Игорь, как раз в [190] ты и проявил мудрость по жизни.
:о)


 
oxffff ©   (2009-01-18 01:28) [192]


> Игорь Шевченко ©   (18.01.09 01:13) [190]
> oxffff ©   (18.01.09 01:05) [189]
>
>
> > Я честно говоря ожидал, что вы мудрее по жизни.
>
>
> Я сожалею, что обманул твои ожидания. На этой ноте, я полагаю,
>  дискуссию можно завершить


Теперь, тогда нет.
Я буду добиваться от вас грамотного решения.

Итак к делу.

Есть

ITask=interface
procedure execute;
end;

ILogger=interface
procedure inform(const Message:string);
end;

Постановка задачи:

Есть набор заданий.
Задание из себя представляет контракт ITask.  
Есть логгер внешний
Логгер из себя представляет контракт ILogger.  

Необходимо произвести запуск всех заданий, в случае возникновения исключения при выполнении задания, информировать о провале задания через логгер. Методы логгера также генерируют исключения в случае провала. Необходимо обеспечить пункты из [176].
Все исключения генерируемые ITask,ILogger - есть экземпляры EExtrernalException.


 
oxffff ©   (2009-01-18 01:32) [193]


> Юрий Зотов ©   (18.01.09 01:28) [191]
> > Игорь Шевченко ©   (18.01.09 01:13) [190]
>
> Игорь, как раз в [190] ты и проявил мудрость по жизни.
> :о)


Да и вы туда же, смотрю задел я вас тогда замечанием о вашей реализацией синглетона. Шайка прям. Все за друг друга. Вась. Вась.
Все отличились и А.П. тоже как получил от меня замечание.
Но тоже не признал.

Может тогда решите совместно грамотно [192].


 
oxffff ©   (2009-01-18 01:41) [194]


> oxffff ©   (18.01.09 01:28) [192]


Обязательным требованием является то, что пользователь может выдеть только тот результат, который отослан ему через ILogger. Искомое приложение запускается за отдельно стоящей машине, без GUI.
Любое логирование или информирование должно происходить только через ILogger.


 
Юрий Зотов ©   (2009-01-18 01:42) [195]

> oxffff ©   (18.01.09 01:32) [193]

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

LOL


 
oxffff ©   (2009-01-18 01:48) [196]


> > oxffff ©  
> > Игорь Шевченко ©  
> Теперь, тогда нет.
> Я буду добиваться от вас грамотного решения.


Я думаю теперь в противном случае вы либо приводите грамотное решение с учетом [176],[192],[194]. Либо признаете, что погорячились, либо
подтвердите свои слова грамотным решением.


 
oxffff ©   (2009-01-18 01:55) [197]


> Юрий Зотов ©   (18.01.09 01:42) [195]


Никто не говорит о споре с кем либо.
Пожалуйста есть утвреждение, которое нужно подтвердить, либо отказаться.
Либо номер № 3, сделать как вы. :)
Ну что я могу сделать, это ваш выбор.

Я давном случае, я хочу отстоять свое право оставаться профессионалом(и возможно сложившийся авторитет для кого-то. А это знаете ли немало.)
Не больше и не меньше. Вас уличить у меня цели нет.


 
oxffff ©   (2009-01-18 01:58) [198]


> Юрий Зотов ©   (18.01.09 01:42) [195]
> > oxffff ©   (18.01.09 01:32) [193]
>
> Нет, я тоже проявлю мудрость по жизни. Существует категория
> людей, спорить с которыми не нужно.


Но тем не менее в своей статье упомянули возможность изменить ваше решение чуть его сократив, тихо умолчав кто его вам дал. :)
Эх, Юрий, Юрий.


 
oxffff ©   (2009-01-18 02:06) [199]


> oxffff ©   (18.01.09 01:58) [198]


Юрий Зотов ©
Помните про

if _Singleton = nil then //Можно и без проверки


 
Германн ©   (2009-01-18 02:18) [200]


> Существует категория людей, спорить с которыми не нужно.

Вот это точно. Бо они заточены именно на споры. Суть спора их не очень волнует.



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

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.89 MB
Время: 0.053 c
2-1233909755
kyn66
2009-02-06 11:42
2009.03.29
Не правильно работает MonthsBetween


15-1233314347
Mozart
2009-01-30 14:19
2009.03.29
portable?


2-1233329666
@!!ex
2009-01-30 18:34
2009.03.29
помогите с TRegExp


2-1233121683
Vemer
2009-01-28 08:48
2009.03.29
Записать-прочитать файл под WinApi


15-1232443558
Gans
2009-01-20 12:25
2009.03.29
Проблемы с QIP может кто знает