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

Вниз

try ... except   Найти похожие ветки 

 
Separator ©   (2005-11-20 13:55) [0]

Что-то много нарду стало, считающих, что try ... except(finally) решение всех их проблем, что это защита от ввода пользователем неправильных параметров и т.д.


 
GuAV ©   (2005-11-20 14:00) [1]


> Что-то много нарду стало, считающих, что try ...
> except(finally) решение всех их проблем

Кто сказал ?


> что это защита от ввода пользователем неправильных
> параметров и т.д.

Нет, защита - это поднятие исключение, а try ... except(finally) - это уже обработка ситуации неправильного ввода.


 
Separator ©   (2005-11-20 14:06) [2]

Толи я от жизни отстал, то ли я многого не понимаю. Просто что-то меня зацепил этот пост http://delphimaster.net/view/2-1132428043/
Но я всегда считал, что чем меньше используешь try except, тем лучше. И когда можно обойтись без него, то обхожусь. Единственно, когда в критических местах ставлю try .. finally, для очищения ресурсов.

Просветите меня, правильно ли я поступаю или нет?


 
Qwertykz   (2005-11-20 14:26) [3]

Но в любом случае это помогает в некоторых случаях?


 
default ©   (2005-11-20 14:27) [4]

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


 
default ©   (2005-11-20 14:37) [5]

перекрывай  в потомке
procedure CreateParams(var Params: TCreateParams);


 
default ©   (2005-11-20 14:37) [6]

мать, не туда:)


 
Separator ©   (2005-11-20 14:57) [7]

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


 
sniknik ©   (2005-11-20 14:58) [8]

default ©   (20.11.05 14:27) [4]
ну это не совсем борьбы со следствием, это реакция на него. (борьба была бы если бы везде пустышки try ... except {nothing} end; стояли..)

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

к примеру предугадайка... ;)

ADOConnection1.Close;
ADOConnection1.ConnectionText:= Edit1.Text;

ADODataSet1.CommandText:= Edit2.Text;
ADODataSet1.Open;
...
получится заранее (только все варианты и чтоб правильно без ошибок), сам лично тебе памятник при жизни поставлю ;о)).


 
default ©   (2005-11-20 14:59) [9]

Separator ©   (20.11.05 14:57) [7]
они тебе это доказали?:)нет!у тебя есть основания избрать другой путь, они не дали тебе оснований для пересмотра твоего пути так что пока можешь не беспокоиться;)


 
sniknik ©   (2005-11-20 15:00) [10]

Separator ©   (20.11.05 14:57) [7]
в обшем ничего не бывает, давай конкретный случай, и будем разбирать, что для него будет лучше.


 
Igorek ©   (2005-11-20 15:01) [11]

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


 
default ©   (2005-11-20 15:03) [12]

sniknik ©   (20.11.05 14:58) [8]
согласен, заметьте я сказал что когда нельзя устранить причину тогда блоки try никакого проиворечия:) когда можно и целесообразно устранить - устраняем причину, если нельзя устранить или нецелесообразно устранять(например, из-за большой сложности) то используем try


 
sniknik ©   (2005-11-20 15:18) [13]

если считать за конкретику
Separator ©   (20.11.05 08:40) [13]
из ссылки.
> .... одно иг правильных решений:

то 2 дырки ты там допустил (чего не случилось бы при  решении с try except)

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


 
Separator ©   (2005-11-20 15:32) [14]


> sniknik ©   (20.11.05 15:18) [13]

Согласен, у меня тоже есть недостатки, не все учел.
Я не делал упор но то, что мой код полностью верен, но я считаю, что использование try в данном случае не целесообразно, тот же StrToIntDef полностью перекрывает их нужды



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

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

Наверх




Память: 0.5 MB
Время: 0.039 c
10-1109074082
vecna
2005-02-22 15:08
2005.12.11
TCrystalActiveXReportViewer


2-1132687021
Slaviq
2005-11-22 22:17
2005.12.11
Combobox.Items.AddObject( Текст , Текст )


5-1116420936
Priest
2005-05-18 16:55
2005.12.11
Регистрация своего расширения в DreamDesigner


14-1132192872
SPeller
2005-11-17 05:01
2005.12.11
Вторая мировая и роль США в ней


14-1132310173
12DFBDD
2005-11-18 13:36
2005.12.11
Java memory leak