Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Форум группы: delphi > Как заставить пользователя читать ошибки?


Автор: DarkProg 16.9.2012, 20:11
Вечер добрый.
Сижу вот в тысячный раз уже думаю чтобы сделать чтобы пользователи читали ошибки, причём желательно первую ошибку(ну когда появляется сначала одна, потом ещё 1001 связанная с первой и в конце концов когда всё перестаёт работать пользователь удосуживается прочитать чего оно там пишет, только уже это бессмысленно).
Я уже сделал глобальный перехват исключений и сделал "перевод" большинства ошибок(про нормальную обработку своих исключений я вообще молчу, есть и всё там по русски написано), но это всё равно не помогает, причём "ОК" жмут все, даже программисты у клиентов (ну они как бы программисты с натяжкой но всё равно) и говорят потом, что вот видите мол ничего не работает... ну понятно что работать после некоторых исключений не будет, даже если есть соответствующие обработчики.

Вот, как заставить читать?
Я уже в принципе подумывал о совсем страшном варианте в виде своего окна для вывода сообщения об ошибке, только без возможности его закрыть скажем в течение 10 секунд, но мне кажется даже моё начальство такой жестокий метод не одобрит...

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

Так вот никто не решал такую проблему глобально или может у кого-то есть какие-то мысли по этому поводу?

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

P.S. блин, ну написал же опять по толстовски, надеюсь что меня поняли smile

Автор: lomaster 16.9.2012, 20:24
А зачем? Вот вы пользователь ОС, много читаете, и помогает?

Автор: DarkProg 16.9.2012, 20:44
Цитата(lomaster @  16.9.2012,  21:24 Найти цитируемый пост)
 Вот вы пользователь ОС, много читаете, и помогает? 

Вообще-то да, особенно если читать слева направо и сверху вниз.

Автор: lomaster 16.9.2012, 20:50
Цитата

Вообще-то да
 В смысле, помогает.., и как?

Автор: rodnover 16.9.2012, 21:00
Единственный метод, который у меня удался - записывать все ошибки в лог с точным временем их появления. Одно плохо - последовательность действий, которая этому поспособствовала, я так и не придумал как просто быстро удобно автоматически сохранять, но лог это кушать тоже может при определённых усилиях.
Сейчас, кстати, после полутора лет использования, очень редко этот лог приходится читать.

Автор: Akella 16.9.2012, 21:22
никак не заставить
разве что рублём по карману

Добавлено через 27 секунд
не прочитал - потерял данные - следующий раз будет умнее, сам виноват

Автор: DarkProg 16.9.2012, 21:52
Цитата(Akella @  16.9.2012,  22:22 Найти цитируемый пост)
не прочитал - потерял данные

Не помогает... хотя сами же минут 15-20 сидят набивают чего-нить в специальной форме.

Цитата(rodnover @  16.9.2012,  22:00 Найти цитируемый пост)
Единственный метод, который у меня удался - записывать все ошибки в лог с точным временем их появления. Одно плохо - последовательность действий, которая этому поспособствовала, я так и не придумал как просто быстро удобно автоматически сохранять, но лог это кушать тоже может при определённых усилиях.
Сейчас, кстати, после полутора лет использования, очень редко этот лог приходится читать. 

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

У меня проблема больше с тем что пользователи быстрее жмут "ОК" чем читают ошибку, а потом выставляют претензию типа "Видите не работает", буквально в пятницу увидел у себя в заданиях, что мол вот так AV, а вот так не AV. Я по тексту ошибки вижу что обращается к пустому указателю, а тот кто писал не прочитал, что у него мгновением ранее вылезло окно, что библиотеки не подгрузились(там корень зла не с моей стороны, а со стороны местных защитников информации, которые круто накосячили) и дальнейшая работа в принципе не гарантируется.
Вот я даже не знаю честн слово, толку от лога мне не будет, потому что я и так знаю в чём проблема... мне в общем всё равно, но вот реально ситуация убивает.


Цитата(Akella @  16.9.2012,  22:22 Найти цитируемый пост)
никак не заставить
разве что рублём по карману

не прочитал - потерял данные - следующий раз будет умнее, сам виноват 

Оно то верно, особенно последнее, но тоже не решение проблемы

Автор: rodnover 17.9.2012, 07:43
Цитата(Akella @  17.9.2012,  01:22 Найти цитируемый пост)
не прочитал - потерял данные - следующий раз будет умнее, сам виноват 


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

Цитата(DarkProg @  17.9.2012,  01:52 Найти цитируемый пост)
У меня проблема больше с тем что пользователи быстрее жмут "ОК" чем читают ошибку, а потом выставляют претензию типа "Видите не работает", буквально в пятницу увидел у себя в заданиях, что мол вот так AV, а вот так не AV. Я по тексту ошибки вижу что обращается к пустому указателю, а тот кто писал не прочитал, что у него мгновением ранее вылезло окно, что библиотеки не подгрузились(там корень зла не с моей стороны, а со стороны местных защитников информации, которые круто накосячили) и дальнейшая работа в принципе не гарантируется.


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

Автор: Akella 17.9.2012, 12:59
Цитата(rodnover @  17.9.2012,  07:43 Найти цитируемый пост)
и заинтересовано в безбажности поможет

 smile 

Автор: rodnover 17.9.2012, 19:36
Цитата(Akella @  17.9.2012,  16:59 Найти цитируемый пост)
smile  

Thanks. Запятые поправил. smile

Автор: bems 20.9.2012, 04:33
Я тоже за логи. Читать глазами слишком сложна для такой важной птицы как любимая секретутка местного босса

Автор: DarkProg 20.9.2012, 17:16
Цитата(bems @  20.9.2012,  05:33 Найти цитируемый пост)
Я тоже за логи. Читать глазами слишком сложна для такой важной птицы как любимая секретутка местного босса 

Ну и смысл мне с лога, где будет написано что кому-то там вылезло сообщение, типа "Вы не заполнили поле "какое-то там""?
Т.е. у меня сама ошибка обработана, это теперь пользователю надо, либо что-то нажать, либо что-то заполнить, либо позвонить админам местным и узнать что за фигня с сервером творится. Я же не предлагаю ему исправлять мои ошибки. Причём я даже в сообщении пишу кому звонить(только из-за того что клиентов много нельзя указать номера телефонов кому звонить)!

Автор: Frees 28.9.2012, 12:52
Чтобы текст ошибки прочитали (с большей вероятностью) он должен быть короткий 3-4 слова.


Автор: DarkProg 28.9.2012, 15:16
Цитата(Frees @  28.9.2012,  13:52 Найти цитируемый пост)
Чтобы текст ошибки прочитали (с большей вероятностью) он должен быть короткий 3-4 слова.

Ну в целом верно, только так частенько не выходит :(

Автор: Frees 28.9.2012, 16:41
Цитата(DarkProg @  28.9.2012,  18:16 Найти цитируемый пост)
Ну в целом верно, только так частенько не выходит :(

А кто сказал что будет легко... smile

http://usethics.ru/blog/lib/vis/

Автор: DarkProg 28.9.2012, 17:08
Цитата(Frees @  28.9.2012,  17:41 Найти цитируемый пост)
А кто сказал что будет легко... 

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

Автор: AVX 9.11.2012, 05:21
DarkProg, это кривизна рук разработчика. Зачем ты напрягаешь пользователя своими ошибками? Пиши, то что тебе нужно, в лог, а пользователю дай возможность нормально выполнять свою задачу.

А вообще выбрось ему что-то вроде такого
user posted image
чтобы он прочитал и хорошенько поразмыслил над своим поступком.. да и вообще над жизнью

Автор: bems 9.11.2012, 06:17
AVX, как дать пользователю выполнять свою задачу когда он неправильно заполнил поля формы?
я вижу тут только способ вывести сообщения "поле СУММА содержит неверное значение МНОГО, введите туда число"

Автор: AVX 9.11.2012, 10:04
Цитата(bems @  9.11.2012,  06:17 Найти цитируемый пост)
AVX, как дать пользователю выполнять свою задачу когда он неправильно заполнил поля формы?

В качестве бест практики в таком случае используется валидация. то есть не правильно заполненные поля подсвечиваются красной рамкой а кнопка "ок" не активна, пока все поля не заполнены корректно. Естественно, бывают случаи когда мы можем провести полную проверку валидности только при соединении с неким источником, например БД. В таком случае красную рамку с сообщением нужно показать после нажатия кнопки "ок". Сообщение, в этом случае, пользователю тоже стоит показать, но читать ему его будет необязательно, он прочитает его красным шрифтом возле красной рамочки.
user posted image
user posted image
user posted image

Автор: bems 9.11.2012, 10:18
то есть твой ответ на вопрос темы, это "показывать его красным шрифтом возле красной рамочки"
ну да, это же всё меняет smile

Автор: AVX 9.11.2012, 10:35
Цитата(bems @  9.11.2012,  10:18 Найти цитируемый пост)
то есть твой ответ на вопрос темы, это "показывать его красным шрифтом возле красной рамочки"
ну да, это же всё меняет  

Ты считаешь что это
Цитата

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

и описанное мной выше имеют много общего? Это концептуально другой подход, и в этом случае не возникает проблем с пользователем и ему удобно. Ему сразу подсвечивается поле, где он ввёл некорректное значение и описание. Согласись, что это во много раз удобней, чем читать сухой текст в окошке и напрягать себя мыслями о том, где была допущена ошибка.

Добавлено через 4 минуты и 15 секунд
Кроме того, мы делаем неактивной кнопку продолжения, что собственно всё таки заставит ввести пользователя корректное значения в поле. Надо понимать, что в пользователя в данный момент, когда он вводит данные в поля, может быть ещё 10 дел на уме, поставьте себя на его место. 
Так что считаю, что в данном случае виноват не пользователь, а навыки разработки приложений ТС нуждаются в развитии  smile 

Автор: bems 9.11.2012, 10:57
Я считаю что есть категория пользователей, которая категорически ничего не читает. Ты описал всем давно изместные вещи, никак не решающие проблему сообщений.
Еще считаю что то что ты говоришь это то же самое сообщение, которое не будет прочитано. А про неактивную кнопку, ну естественно так надо делать когда это возможно, но эта кнопка вызовет подробнейший багрепорт из трех слов "ничего не работает".

Автор: AVX 9.11.2012, 11:58
Цитата(bems @  9.11.2012,  10:57 Найти цитируемый пост)
А про неактивную кнопку, ну естественно так надо делать когда это возможно, но эта кнопка вызовет подробнейший багрепорт из трех слов "ничего не работает". 

А какой по твоему пользователю нужен багрепорт, такой?
user posted image

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

Цитата(bems @  9.11.2012,  10:57 Найти цитируемый пост)
Ты описал всем давно изместные вещи, никак не решающие проблему сообщений.

При данном подходе недовольных пользователей становится на порядок меньше (в моём случаи их вообще нет).

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

Автор: bems 9.11.2012, 12:12
Цитата(AVX @  9.11.2012,  11:58 Найти цитируемый пост)
А какой по твоему пользователю нужен багрепорт, такой?

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


Цитата(AVX @  9.11.2012,  11:58 Найти цитируемый пост)
При данном подходе недовольных пользователей становится на порядок меньше (в моём случаи их вообще нет). 
глядя на вопросы которые у тебя возникают по стандартным элементам управления легко сделать вывод что у тебя три с половиной пользователя и работаешь ты второй месяц (фигурально выражаясь есессно). Все тупые секретарши еще впереди smile

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

Автор: AVX 9.11.2012, 12:23
Цитата(bems @  9.11.2012,  12:12 Найти цитируемый пост)
глядя на вопросы которые у тебя возникают по стандартным элементам управления легко сделать вывод что у тебя три с половиной пользователя и работаешь ты второй месяц (фигурально выражаясь есессно). Все тупые секретарши еще впереди 

ты даже не поленился порыть мои сообщения? приветствую smile но на дату сообщений тоже стоит смотреть smile 
пользователей сотни, а ты видимо утверждаешь что то, как делает ТС более правильно?

Цитата(bems @  9.11.2012,  12:12 Найти цитируемый пост)
уже второй раз лепишь сообщение о повреждении памяти. ты думаешь с первого раза никто не заметил?

ты не понял что это сарказм?

Автор: bems 9.11.2012, 12:39
Цитата(AVX @  9.11.2012,  12:23 Найти цитируемый пост)
но на дату сообщений тоже стоит смотреть

год назад. 
для тебя год это много? тогда мои подозрения подтверждаются

Цитата(AVX @  9.11.2012,  12:23 Найти цитируемый пост)
пользователей сотни

oh tell me more

Цитата(AVX @  9.11.2012,  12:23 Найти цитируемый пост)
ты не понял что это сарказм?

ага, повторенный дважды smile

Автор: AVX 9.11.2012, 12:46
Цитата(bems @  9.11.2012,  12:39 Найти цитируемый пост)
для тебя год это много? тогда мои подозрения подтверждаются

ты к http://forum.vingrad.ru/forum/topic-338407.html сообщению прикопался? smile тогда скажи в чё там заключается несусветная глупость?

Цитата(bems @  9.11.2012,  12:39 Найти цитируемый пост)
oh tell me more

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

ты так и не ответил
Цитата(AVX @  9.11.2012,  12:23 Найти цитируемый пост)
а ты видимо утверждаешь что то, как делает ТС более правильно?


Автор: bems 9.11.2012, 12:53
Цитата(AVX @  9.11.2012,  12:46 Найти цитируемый пост)
 если тебя удивляет что софт разрабатывается для сотен пользователей

нет, сам этот факт для меня не нов, меня удивляет что с твоих слов ты имеешь к этому какое-то отношение 

Цитата(AVX @  9.11.2012,  12:46 Найти цитируемый пост)
тогда скажи в чё там заключается несусветная глупость?

так за год и не прозрел? пропертё есть для этого. ну по крайней мере в дельфи. думаю в дотнете не сложнее. ну какие сотни юзеров после этого? второй курс отсилы

Цитата(AVX @  9.11.2012,  12:23 Найти цитируемый пост)
а ты видимо утверждаешь что то, как делает ТС более правильно?

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

Автор: AVX 9.11.2012, 13:05
Цитата(bems @  9.11.2012,  12:53 Найти цитируемый пост)
нет, сам этот факт для меня не нов, меня удивляет что с твоих слов ты имеешь к этому какое-то отношение 

В прочем если бы узнал что ты имеешь какое то отношение к разработки UI, я бы ничуть не удивился. Я видел много программ, которые то и делают, что выбрасывают страшные ексепшены с непонятным текстом и сопровождаются матами пользователей. А вот что ты имеешь какое то отношение к разработке качественно UI сомневаюсь. В прочем меня твоё удивление мало интересует, так как при надобность я могу показать как выглядит софт, в разработке UI которого я смогу доказать свой непосредственный вклад. А вот сможет ли это сделать ты? smile 

Цитата(bems @  9.11.2012,  12:53 Найти цитируемый пост)
так за год и не прозрел? пропертё есть для этого. ну по крайней мере в дельфи. думаю в дотнете не сложнее. ну какие сотни юзеров после этого? второй курс отсилы

это похоже на высказывание с попыткой оскорбить, но ни как на 
Цитата(bems @  9.11.2012,  12:53 Найти цитируемый пост)
тогда скажи в чё там заключается несусветная глупость?


Автор: bems 9.11.2012, 13:10
какое оскорбить? я тебе говорю свойство есть для этого. делается в одну строчку (ну пусть две)
люди занимающиеся этим профессионально умеют читать хелп.

Автор: AVX 9.11.2012, 13:15
Цитата(bems @  9.11.2012,  13:10 Найти цитируемый пост)
какое оскорбить? я тебе говорю свойство есть для этого. делается в одну строчку (ну пусть две)

может тогда скажешь что за свойство?

Автор: bems 9.11.2012, 13:28
RowSelect
в wpf может как-то подругому, но наверняка не сложнее

Автор: AVX 9.11.2012, 13:37
Цитата(bems @  9.11.2012,  13:28 Найти цитируемый пост)
RowSelect
в wpf может как-то подругому, но наверняка не сложнее 

Ты действительно думаешь что целый подраздел форума не нашёл бы это свойство, если бы оно было? В общем то его чисто с концептуальной точки зрения даже не должно существовать. А тебе не стоит упрекать в вещах, в которых не разбираешься  smile 

Автор: bems 9.11.2012, 14:07
я не знаю что там думал подраздел форума, и что там думали авторы wpf
но в проводнике стандартный нативный контрол для которого это делается в одну строку

Цитата(AVX @  9.11.2012,  13:37 Найти цитируемый пост)
В общем то его чисто с концептуальной точки зрения даже не должно существовать
ну если с концептуальной, то наслаждайтесь результатом smile

Автор: Akella 9.11.2012, 16:11
Цитата
 Как заставить пользователя читать ошибки?


Показывать кнопку ОК через 10 секунд после показа окна с ошибкой.

Автор: DarkProg 11.11.2012, 17:33
Цитата(Akella @  9.11.2012,  17:11 Найти цитируемый пост)
Показывать кнопку ОК через 10 секунд после показа окна с ошибкой. 

Ахахаха smile))) Думаю не поможет. Я уже понял, что особо ничего не поможет. В лучшем случае ещё то что более или менее вменяемо типа "У вас поле не заполнено" или "Тут должно быть число" они прочитать могут, всё остальное они тупо не осиливают.

Я пролистал тут тему(я как-то решил что разговор утих сам собой и поэтому не вчитывался) и скажу так, что пользователю при некоторых видах ошибок, типа потеря связи с сервером или БД вообще не получится что либо делать, а понять это они не могут(или я как программист не могу с этим ничего поделать), в виду кривости реализации отдельных компонентов или моментов отловить эту дурную ошибку нельзя... ну это так чисто моё лирическое отступление(самое худшее когда подобные хитрые ошибки вызывают другие ошибки, которые интерпретируются неправильно, например когда сбоит сеть у людей я вижу иногда конфликт транзакций, хотя такого быть не может, но такая ошибка на экране есть). Есть ещё много чего что могу рассказать, в таком духе... я чем дальше работаю, тем меньше смеюсь над шуткой "Чем более интуитивно понятный интерфейс создаёт программист, тем более тупого пользователя рождает мир" - наболело, извините...

Я отмечу тему решённой, так как уже вынес полезный урок отсюда.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)