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

Вниз

try or if   Найти похожие ветки 

 
Alexander Panov ©   (2005-07-21 20:11) [40]

ki11er   (21.07.05 19:49) [39]
ANB ©   (21.07.05 19:47) [38]
Согласен, здесь был несколько неудачный пример.

Что касается примера из [33], то [35] можно считать просто отмазкой(софистикой).


 
ki11er   (2005-07-21 20:20) [41]

Ок. Пора с этим заканчивать, а то уже начало переходить в стадию флейма ;-) Всем спасибо.


 
ANB ©   (2005-07-21 20:23) [42]

Мое ИМХО. Исключения штука полезная, но и пихать их где не попадя я не люблю, так как делфа падает при отладке, если флажек не снять. А если снять - то замучаешься искать какую нибудь всплывшую ошибку. Если что то можно проверить без исключения, то зачем на него нарываться ? Вот в примере автора сабжа ничего не понимаю - если в поле разрешен ввод нецелых чисел - зачем пытаться запихать его в целое ? А если нужно определить, что после запятой ничего нет, так это намного проще делается. Корректность ввода числовых данных в едите еще проще делается - юзаешь rxCurrencyEdit или rxCalcEdit. Там даже калькулятор встроенный есть. Все красиво и удобно.


 
Alexander Panov ©   (2005-07-21 20:25) [43]

ki11er   (21.07.05 20:20) [41]
Ок. Пора с этим заканчивать, а то уже начало переходить в стадию флейма


В следующий раз аргументы подбери посерьезнее.


 
Alexander Panov ©   (2005-07-21 20:36) [44]

ANB ©   (21.07.05 20:23) [42]

Спор возник из-за высказываний [27] и [29].

В 27 утверждалось, что без исключений можно обойтись всегда.
В 29 - Borland навязывает исключения.(...так как здесь почти все построено на исключениях и они просто навязываются кодеру...)

На самом деле каждый сам выбирает, что ему использовать.
Если ki11er считает, что программа должна вылетать по ошибке - это его право.

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

Знаю я одного разработчика, у которого программы вылетает без обработки ошибок.

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

А флейм действительно ни о чем.


 
Eraser ©   (2005-07-21 20:39) [45]

имхо всё должно быть вмеру и к месту (нужному)). Защещённые блоки и ф-я GetLastError не зря придуманы.


 
ki11er   (2005-07-21 21:39) [46]

2 Alexander Panov:

>В следующий раз аргументы подбери посерьезнее.
Это ты о чем? Мои аргументы достаточно сильные.

>В 27 утверждалось, что без исключений можно обойтись всегда.
Именно так. По-твоему до тех пор, пока не появились исключения и программирования не было? Для справки: программирование появилось гораздо раньше, чем придумали исключения (те исключения о которых здесь идет речь, просьба к словам не цепляться)

>В 29 - Borland навязывает исключения.(...так как здесь почти
>все построено на исключениях и они просто навязываются
>кодеру...)
Да, навязывает. В качестве доказательства обратного попробуй написать программу, которая открывает файлстрим (используя стандартный TFileStream) и корректно обрабатывает ошибки, не используя при этом конструкции try... Если у тебя это получится сделать с той же легкостью, что и с использованием try, то это будет небольшой аргумент в твою пользу. А если серьезно - я уже говорил выше - открой исходники и посмотри. Почти вся обработка ошибок - на исключениях. Поэтому обойтись без них практически невозможно. Разве что писать на голом АПИ. Но зачем тогда Delphi нужен?  ;-)

>Если ki11er считает, что программа должна вылетать по ошибке -
>это его право.
Я так считаю? :-F Почитай мои посты. Или я не по русски пишу...
Говорил, говорю и буду говорить. Все ошибки должны обрабатываться. Причем с выдачей максимума информации о возникшей проблеме и с рекомендациями пользователю, что ему делать дальше.


 
Alexander Panov ©   (2005-07-21 21:43) [47]

ki11er   (21.07.05 21:39) [46]
Все ошибки должны обрабатываться. Причем с выдачей максимума информации о возникшей проблеме и с рекомендациями пользователю, что ему делать дальше


Вот с этим абсолютно согласен;)


 
ANB ©   (2005-07-21 21:48) [48]

Че то не туда заворачиваем. Ну есть внутренние исключения. Для их обработки придумали try except (правда, он не всегда помогает). Есть в этом и плюсы. Например, если открываешь кверю, а в запросе ошибка, то без исключений мне ВСЕГДА придется проверять, а открылась ли она. Если ошибки возможны - я их перехвачу и обработаю. Если ошибки редки и фатальны для дальнейшего исполнения кода - оставлю обработку по умолчанию.
Суть не в этом. Автор сабжа спрашивает : генерить ли исключения специально, чтобы перехватить, или работать по if. Мое мнение - лучше через if. А исключения оставить на фактические ошибки.


 
ki11er   (2005-07-21 21:51) [49]

Вот кстати, цитата из требований которые я писал для "новобранцев":

5. Сообщения об ошибках ОБЯЗАТЕЛЬНО должны содержать 1. Более-менее понятную пользователю информацию о том, что происходит; 2. Рекомендации пользователю, что он ему делать дальше; 3. !!! Достаточно информации для того, чтобы разработчик программы мог определить по сообщению место ошибки (именно место ошибки, а не место из которого отобразилось сообщение !!!) в коде программы с точностью до строчки.


 
Alexander Panov ©   (2005-07-21 21:57) [50]

ki11er   (21.07.05 21:51) [49]

Это консенсус;)


 
TUser ©   (2005-07-22 07:35) [51]

Это филосовский вопрос. try безусловно лучше в тех случаях, когда не известно, какие именно ошибки могут возникнуть. Особенно, если в процедуре ты взаимодействуешь с чем-то внешним (устройством, файлом, чужими данными и т.д.). if удобен, если ты заранее знаешь, что за ошибка возможна (например, выход индекса за пределы массива).

Скорее правильный вопрос, не что лучше, а где. Вот допустим у тебя есть "ядро" приложения - там всякие низкоуровневые дела реализованы. Оно когда-то отлажено, и то, что там возникает ошибка, обычно малоинформативно. Там не надо делать try. А вот на уровень выше, там где ты работаешь с конкретными данными, есть смысл записать логи, чтобы потом проеврить, что с этими данными не так. Впрочем, пяткой в грудь себя бить не буду.



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

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

Наверх




Память: 0.57 MB
Время: 0.041 c
1-1122361847
Kolan
2005-07-26 11:10
2005.08.14
Как назначить всем формам одну иконку (16x16).


1-1122270265
Рафик
2005-07-25 09:44
2005.08.14
Debugger Fault Notification


1-1122372361
serjufa
2005-07-26 14:06
2005.08.14
ак программно из D5 заставить на листе Excel отобразиться сетке


1-1122348235
Кот
2005-07-26 07:23
2005.08.14
Как узнать размер файла?


1-1122382746
chili
2005-07-26 16:59
2005.08.14
Помогите разобраться с потоком