Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];

Вниз

Delphi типы исключений.   Найти похожие ветки 

 
DVM ©   (2008-01-27 19:30) [40]

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

Выдача различных MessageBox - это плохой вариант. Лучше посвечивать место ошибки (Edit) и делать подпись рядом с ним. Юзеры адекватнее реагируют.


 
Семеныч   (2008-01-27 19:30) [41]

> DVM ©   (27.01.08 19:25) [36]

А ему и понимать ничего не надо. Там четко написано - обратись к тому-то. Так что все, что требуется от юзера - позвать "того-то".


 
Petr V. Abramov ©   (2008-01-27 19:34) [42]


> Семеныч   (27.01.08 19:30) [41]

"те-то" могут не понять такой подход :)


 
DVM ©   (2008-01-27 19:35) [43]


> Там четко написано - обратись к тому-то.

И что там указано? ФИО, должность, телефон?


 
DVM ©   (2008-01-27 19:36) [44]


> Petr V. Abramov ©   (27.01.08 19:34) [42]


> "те-то" могут не понять такой подход :)

А, я понял, там врагов можно указывать.


 
Черный Шаман   (2008-01-27 19:37) [45]


> Семеныч   (27.01.08 19:27) [39]
>
> > Игорь Шевченко ©   (27.01.08 19:20) [33]
>
> Юзер ввел в Edit заведомо неверные данные и жмякнул ОК.
> Программа обнаружила его ошибку и вместо того, чтобы принять
> данные и закрыть диалог ввода, выдала ему вразумительное
> сообщение и попросила либо исправить данные, либо нажать
> "отмену".
>
> Данные программа не исправила, она этого и не могла сделать.
>  А ситуацию - исправила. И совершенно спокойно может продолжать
> работать.


А зачем для этого исключения если достаточно кода возврата?


 
DVM ©   (2008-01-27 19:39) [46]


> Черный Шаман   (27.01.08 19:37) [45]

Вот я того же мнения. Наверное это навеяно довольно долгим моим общением с "чиста WinAPI", где исключения это редкость. Я как то не принимаю эту (не спорю, неплохую по сути своей) идею с исключениями.


 
Семеныч   (2008-01-27 19:43) [47]

> DVM ©   (27.01.08 19:35) [43]
> И что там указано? ФИО, должность, телефон?

Должность. А ФИО и телефон этой должности юзер должен знать сам. Это уже вопросы организационные, а не технические. Их программа не решает и решать не должна.

> Черный Шаман   (27.01.08 19:37) [45]
> А зачем для этого исключения если достаточно кода возврата?

Хорошо, пусть диалог вернул код возврата. И что с ним дальше делать?


 
Anatoly Podgoretsky ©   (2008-01-27 19:43) [48]

> Семеныч  (27.01.2008 19:21:34)  [34]

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


 
DVM ©   (2008-01-27 19:44) [49]


> И что с ним дальше делать?

Как что? Исключение генерить, а затем давить :)


 
Anatoly Podgoretsky ©   (2008-01-27 19:44) [50]

> Черный Шаман  (27.01.2008 19:22:35)  [35]

И Виндоус и прочие посторонние программы вы хакали?
А то требование не выполнимо или двойные стандарты, или как там у вас.


 
Anatoly Podgoretsky ©   (2008-01-27 19:45) [51]

> DVM  (27.01.2008 19:25:36)  [36]

Такой дурной пользователь, что не в состоянии прочитать это - "Обратитесь к тому-то."


 
Семеныч   (2008-01-27 19:46) [52]

> DVM ©   (27.01.08 19:39) [46]

> Я как то не принимаю эту (не спорю, неплохую по сути своей) идею с
> исключениями.

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


 
DVM ©   (2008-01-27 19:47) [53]


> Такой дурной пользователь, что не в состоянии прочитать
> это - "Обратитесь к тому-то."

Зачем ему там про тип исключения писать?


 
Anatoly Podgoretsky ©   (2008-01-27 19:48) [54]

> Семеныч  (27.01.2008 19:27:39)  [39]

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


 
DVM ©   (2008-01-27 19:49) [55]


> Семеныч   (27.01.08 19:46) [52]


> Ее надо просто понять.

Да я не сказть, что ее не понимаю, скорее не принимаю как то. Несмотря на это использую как положено чаще всего.


 
Anatoly Podgoretsky ©   (2008-01-27 19:53) [56]

> DVM  (27.01.2008 19:47:53)  [53]

Затем, что я могу ответить ему по телефону, а что делать на голое "Обратитесь к тому-то."


 
Anatoly Podgoretsky ©   (2008-01-27 19:54) [57]

> Palladin  (27.01.2008 18:52:22)  [22]

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


 
Семеныч   (2008-01-27 19:54) [58]

> DVM ©   (27.01.08 19:47) [53]
> Зачем ему там про тип исключения писать?
Чтобы "тому-то", когда он придет, было легче разбираться.

> Anatoly Podgoretsky ©   (27.01.08 19:48) [54]
> Ситуацию она не исправила, данные как были неправильными,
> так ими и остались, исправить она поручила пользователю.

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


 
Черный Шаман   (2008-01-27 19:58) [59]


> Anatoly Podgoretsky ©   (27.01.08 19:44) [50]
>
> > Черный Шаман  (27.01.2008 19:22:35)  [35]
>
> И Виндоус и прочие посторонние программы вы хакали?
> А то требование не выполнимо или двойные стандарты, или
> как там у вас.


Нет, украинское правительство не выделило денег на UAOS полностью на украинском языке, так что заказчики(украинские военные) использовали русскую тыреную Win2000. У нас все таки нет газа и денег на национальную ОС.


 
DVM ©   (2008-01-27 19:58) [60]


> Семеныч   (27.01.08 19:54) [58]


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

Все таки, тому кто придет (если вообще придет, лучше бы по почте) больше бы помог подробный лог. Пользователя только пугать такими сообщениями.
Кстати, подмечено, если программа выдает сообщения об ошибках с кучей технической инфы, непонятной пользователю (типа Access Violation), то она слывет глючной. А понятные сообщения, без лишних подробностей - нет.


 
Черный Шаман   (2008-01-27 20:00) [61]


> Семеныч   (27.01.08 19:46) [52]
>
> > DVM ©   (27.01.08 19:39) [46]
>
> > Я как то не принимаю эту (не спорю, неплохую по сути своей)
> идею с
> > исключениями.
>
> Ее надо просто понять. Прочувствовать, так сказать. Кодов
> возврата никто не отменял и в некоторых ситуациях они действительно
> удобнее и логичнее, чем исключения. А в некоторых - наоборот.
>  Все хорошо в свое время в своем месте.


Единственный случай когда исключение полезно - в конструкторе объекта если создание объекта в данном случае нелогично. Объект автоматически буде уничтожен(прервано создание). Вот здесь исключение полезнее кода возврата.


 
Anatoly Podgoretsky ©   (2008-01-27 20:03) [62]

> Черный Шаман  (27.01.2008 19:58:59)  [59]

Газ у вас есть и по словам одного академика больше, чем у кого либо в мире.


 
Семеныч   (2008-01-27 20:06) [63]

> Черный Шаман   (27.01.08 20:00) [61]

Повторю вопрос: после нажатия ОК форма диалога проверила введенные юзером данные, обнаружила в них заведомую ошибку, закрылась и вернула код возврата. Что программа должна с этим кодом дальше делать?


 
Черный Шаман   (2008-01-27 20:06) [64]


> Anatoly Podgoretsky ©   (27.01.08 20:03) [62]
>
> > Черный Шаман  (27.01.2008 19:58:59)  [59]
>
> Газ у вас есть и по словам одного академика больше, чем
> у кого либо в мире.


Так и академики у нас разработали тепловой котёл с КПД 112%. Законы физики можно изменять, доказано НАНУ.


 
Anatoly Podgoretsky ©   (2008-01-27 20:07) [65]

То то я вашим политикам и академикам не верю.


 
Черный Шаман   (2008-01-27 20:08) [66]


> Семеныч   (27.01.08 20:06) [63]
>
> > Черный Шаман   (27.01.08 20:00) [61]
>
> Повторю вопрос: после нажатия ОК форма диалога проверила
> введенные юзером данные, обнаружила в них заведомую ошибку,
>  закрылась и вернула код возврата. Что программа должна
> с этим кодом дальше делать?


В зависимости от кода возврата процедуры проверки. Обычно у меня код возврата булевый. Например при false стереть edit и установить фокус на него.


 
Anatoly Podgoretsky ©   (2008-01-27 20:09) [67]

> Черный Шаман  (27.01.2008 20:08:06)  [66]

> при false стереть edit

Ну ты и зверь


 
Черный Шаман   (2008-01-27 20:10) [68]


> Anatoly Podgoretsky ©   (27.01.08 20:07) [65]
>
> То то я вашим политикам и академикам не верю.


Ну политики у нас даже часто сами немного верят в то, что и говорят. У нас истинно европейские политики.


 
Petr V. Abramov ©   (2008-01-27 20:10) [69]


> Например при false стереть edit и установить фокус на него.

жестоко :)
а если там ошибка в одной букве?


 
Черный Шаман   (2008-01-27 20:12) [70]


> Anatoly Podgoretsky ©   (27.01.08 20:09) [67]
>
> > Черный Шаман  (27.01.2008 20:08:06)  [66]
>
> > при false стереть edit
>
> Ну ты и зверь


Ну так у меня в окне логина сделано - стандартное решение.


> Petr V. Abramov ©   (27.01.08 20:10) [69]
>
>
> > Например при false стереть edit и установить фокус на
> него.
>
> жестоко :)
> а если там ошибка в одной букве?


Там тоже есть - фокус устанавливается на первый Edit в котором неправильное значение + опционально(по требованиям заказчика) выдаётся messagebox с перечислением ошибок.


 
DVM ©   (2008-01-27 20:13) [71]


> Ну ты и зверь

Типичный пример номер кредитки. Я б убил того, кто мне сотрет набранное, если после проверки ошибка была в одной цифре.


 
Черный Шаман   (2008-01-27 20:13) [72]


> Petr V. Abramov ©   (27.01.08 20:10) [69]
>
>
> > Например при false стереть edit и установить фокус на
> него.
>
> жестоко :)
> а если там ошибка в одной букве?


А если бы процедура вернула не код а exception, то что бы изменилось?


 
Черный Шаман   (2008-01-27 20:14) [73]


> DVM ©   (27.01.08 20:13) [71]
>
>
> > Ну ты и зверь
>
> Типичный пример номер кредитки. Я б убил того, кто мне сотрет
> набранное, если после проверки ошибка была в одной цифре.


А я бы после трех ошибок заблокировал IP и отправил письмо в СБ.


 
DVM ©   (2008-01-27 20:16) [74]


> А я бы после трех ошибок заблокировал IP и отправил письмо
> в СБ.

А если программа для банка и предназначена? Имхо все же стирать - это жестоко. Лучше подсветить, а еще лучше подписать в чем ошибка.


 
Anatoly Podgoretsky ©   (2008-01-27 20:26) [75]

> Черный Шаман  (27.01.2008 20:12:10)  [70]

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


 
Anatoly Podgoretsky ©   (2008-01-27 20:27) [76]

> Черный Шаман  (27.01.2008 20:13:12)  [72]

А точно также, не трогай - не твое.
А код или исключение роли не играет.


 
Игорь Шевченко ©   (2008-01-27 20:40) [77]

Черный Шаман   (27.01.08 19:25) [37]


> Иногда можно - если формат хранилища  невосстановимо разрушен,
>  пересоздать его, если данные в реестре некорректны пересоздать
> их с чистого листа...


Если винт не отформатирован - отформатировать его.
Если формат хранилища разрушен, это не исключительная ситуация, а возврат кода ошибки методом проверки формата хранилища.
Разницу чувствуешь ?

Семеныч   (27.01.08 19:27) [39]


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


Тут можно долго бодаться с терминологией, я согласен с А.П. [54]


 
Семеныч   (2008-01-27 20:51) [78]

> Черный Шаман   (27.01.08 20:08) [66]

> при false стереть edit и установить фокус на него.

Какой Edit? Никаких Edit"ов уже нет - диалог-то уже закрылся. Иначе как он мог вернуть код возврата, не закрываясь? Диалоги - же они по сути своей должны быть модальными. Или второй раз поднимать тот же диалог? А зачем такие сложности городить?

Но если использовать не код возврата, а исключение, то диалог может и не закрываться. Диалог проверяет ввод, обнаруживает ошибку и выдает исключение. Юзер видит сообщение, где по-русски сказано, что у него в таком-то поле такая-то ошибка (причем одновременно видит и само это поле, и ошибочный текст в нем - то есть, юзеру легче понять свою ошибку). Уяснив, в чем дело, юзер жмет ОК в сообщении и оно гаснет. Потом юзер правит текст и жмет ОК в диалоге. Тот снова проверяет данные, видит, что ошибок нет и закрывается. А вызывающий код только  проверяет ModalResult - и наверняка знает, что если он равен mrOK, то данные точно правильные и их можно смело принимать (а если mrCancel, то ничего делать не надо).

И все логично, и все просто, и все всем удобно.


 
DVM ©   (2008-01-27 20:58) [79]


> И все логично, и все просто, и все всем удобно.

Я все то же самое делаю, без привязки к исключениям.


 
DVM ©   (2008-01-27 21:00) [80]


> Семеныч

В диалоге кнопки OK и Отмена. Нажатие кнопки Ок проверяет поля и если что не так сообщает пользователю об ошибках и предлагает исправить. Если ошибок нет, то ModalResult:=mrOk;



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

Форум: "Прочее";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.051 c
3-1192105820
Dush
2007-10-11 16:30
2008.03.02
условие отображения данных в DBGridEh


2-1202199414
SergeyG
2008-02-05 11:16
2008.03.02
Отсчеты с шагом 1 мс


2-1202109520
Vasilii777
2008-02-04 10:18
2008.03.02
Помогите запросить Key!


2-1202226967
_Shuler_
2008-02-05 18:56
2008.03.02
копирование из MsWord


15-1201312850
Черный Шаман
2008-01-26 05:00
2008.03.02
Я правильно понимаю эту строчку?





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