2008-10-11 4 views
38

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

Я кратко искал и не мог найти нить обмана. Хорошо, давай. Спасибо всем.

+1

@ [Thohan]: просто создать бойскаут тег ;-) – 2008-10-15 16:35:17

+1

проверить это [руководство] (HTTPS : //msdn.microsoft.com/en-us/library/dn742471.aspx) от Microsoft, содержит примеры и лучшие практики. – 2010-11-16 07:46:06

ответ

12

Вы имеете в виду пользовательский или в файле журнала для администратора/dev staff?

Я думаю, что это важно, в общем: «нужно ли мне принимать меры»

  • Время штемпеля
  • уровень Тяжесть
  • , что пошло не так
  • Ответьте на вопросы и «если да, то какое действие?»
  • подробно DEV уровня (не заметно, если пользователь-облицовочный)
  • последовательный формат и сроки

Я думаю, что все они являются важными, но протуберанец будет меняться в зависимости от аудитории (как dmckee точек вне). Другой совет (в целом) - ответить 5 W (кто, что, ... и т. Д.)

8

Для конечных пользователей: Сообщите пользователю, что делать. Если пользователь меняет какое-то входное значение, повторите попытку через 5 минут или позвоните в службу поддержки?

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

Пример:
«К сожалению, этот файл не может быть открыт Пожалуйста, убедитесь, что файл не уже открыт другой программой и повторите попытку.»

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

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

+3

Не переусердствуйте от угодничества. Как пользователь проверяет, что файл еще не открыт другой программой? Я действительно ненавижу сообщения о предупреждении, которые заставляют меня нажать «ОК», когда на мой взгляд это не что иное, как «ОК». – 2008-10-11 20:45:24

+2

Вы подбираете мой конкретный пример. Я думаю, что поднятые мной вопросы касаются в целом. Для этого конкретного примера, если у вас есть лучшие формулировки, пожалуйста, поделитесь им. Если это произошло при попытке открыть файл, вы не можете просто сбой программы или молча сделать ничего? – 2008-10-11 20:49:06

+2

Я узнал эти моменты в курсе uni по дизайну пользовательского интерфейса и помню, что они были основаны на твердых исследованиях. – 2008-10-11 20:51:15

9

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

Хороший пользователь сталкивается сообщение об ошибке:

Сбалансированный между бытием родовое и видовое - Вы хотите, чтобы дать пользователю достаточно информации, чтобы они могли исправить свою ошибку и двигаться дальше, но имейте в виду, что злоумышленник может использовать эти же сообщения об ошибках, чтобы атаковать ваш сайт.Хорошим примером этого является контроль входа, в котором возвращается сообщение об ошибке «неправильный пароль для пользователя joe» или «user joe не существует в этой системе», это сообщает злоумышленнику, что они находятся на пути обнаружения правильных пользователей. Который, когда у вас нет ни имени пользователя, ни пароля, половина битвы.

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

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

3

К тому, что уже сказал, что я хотел бы добавить:

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

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

2

ошибок должны:

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

С точки зрения технической поддержки важно также, чтобы сообщения об ошибках были уникальными. Если пользователь может сгенерировать одну и ту же ошибку «файл не может быть открыт» по-разному, это затрудняет людям технической поддержки точное определение того, что делает пользователь. Таким образом, сообщения об ошибках должны быть уникальными для каждой различной ошибки и, если возможно, поставлять код ошибки или номер, чтобы пользователи знали, где искать проблему.

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

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

3

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

Во-первых, требования к сообщениям конечных пользователей:

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

Далее, требование поддержки сообщений техника:

  • хочет быть активными, а не реактивным
  • Не хочет ударить «кирпичную стену» проблему
  • не хочет быть затоплен с сообщениями.

Наконец, требование к сообщениям разработчиков поддержки:

  • Хочет простую ментальную модель для использования кода
  • ожидает ваш компонент «просто работать»
  • хочет полезную информацию, если она не Работа.

Примером сообщения об ошибке, которое очень плохо для конечного пользователя, но может быть разумным для разработчика, является «Латентный кеш столкнулся с исходящими заголовками». :-)

2

Обычно стоит указать на общую причину проблемы, так как это поможет пользователю в 99,9% случаев ошибок.

Например, у нас есть два направления для вопросов инициализации. Один ловит исключения конфигурации, которая гласит:

«Признанный исключение произошло Это может быть проблемой с конфигурацией»

, а другой для неожиданным:

«Произошла непредвиденная ошибка.»

Затем, в зависимости от настройки (вкл. Или выкл.), Мы либо выводим информацию об устройстве, либо более подробную информацию об этом.

1

Там может быть несколько различных контекстов здесь отметить (хотя я уверен, что это было упомянуто снова и снова):

1) Если мы говорим о сайте, имеющем с получением «К сожалению, что-то плохое случилось ", тогда должен быть простой язык, чтобы сообщить пользователю, что произошла ошибка, повторите попытку, и если есть еще вопросы, чтобы связаться со службой поддержки в blah blah blah ...

2) Если мы говорим о том, как регистрировать исключение, забрасываемое кодом для администраторов и разработчиков sys, чтобы читать, этот вопрос становится более важным для того, чтобы исключить запись сообщения и трассировку исключения в файл журнала, электронную почту или средство просмотра событий, чтобы оно могло бытьобрабатывается по-разному в зависимости от того, насколько неотложным является то, что кто-то смотрит на это.

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

2

Сообщения об ошибках для конечных пользователей, а также для тех, кто должен поддерживать код

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

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

6

Очевидно, что предотвращение ошибок является лучшим. Всегда предоставляйте пользователю достаточные сигналы для успешного выполнения задач (т. Е. Объяснять требуемое форматирование полей ввода данных). Тем не менее, «Чтобы ошибаться человек ...» и (применяя принципы удобства использования к ошибкам в веб-приложении), прощение является целью.

Есть три основные функции для вывода сообщений об ошибках:

1. Привлеките внимание - первый, для обеспечения эффективности, пользователь должен видеть его

  • цвет (красный)
  • font (размер, вес)
  • местонахождение (вверху страницы, поле для предупреждения)
  • фокус (! Символ, контур ввода)
  • консистенции (используйте аналогичный формат для сообщений об ошибках по всей заявке)

2. Опишите ошибку - информирует пользователя о том, что пошло не так

  • использование равнину язык, что пользователь понимает
  • использовать объективный голос, не вините пользователя
  • быть кратким

3. Предложить восстановление - дать полезные предложения, чтобы исправить ошибку и продолжить

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

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

2

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

Одна вещь, которая может нанести ущерб моей нервной системе, - это когда в сообщении об ошибке используется слово ИЛИ. «Файл не найден или нет разрешения или диск полностью, или у вашей собаки плохой головной боли ИЛИ ...» Пользователь действительно должен знать, какая из возможных причин ошибки произошла. Программисты избегают ошибок в сообщениях об ошибках.

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

О, и не забудьте указать на возможные последствия: «Система предотвращения белок перестает работать. Все, что хранится на ваших жестких дисках, может быть случайно изменено белками». «Система профилактики белков перестает работать. Белки будут предотвращены только с помощью общей профилактики». Есть разница в степени тяжести.

6

Хорошее сообщение об ошибке состоит из трех частей:

  1. Проблема - объясняет, что случилась ошибка;
  2. Причина - объясняет причину проблемы;
  3. Решение - объясняет, как преодолеть проблему.

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

Но противоположное не соответствует действительности. Трудно сформировать небольшое сообщение в одно, которое четко объясняет проблему, причину и решение проблемы. Вы будете постоянно редактировать свои мысли, чтобы сообщение оставалось маленьким, и в какой-то момент вы будете заблокированы. Да, я несколько раз сталкивался с этой проблемой, поэтому знаю, как сильно это чувствуется.

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

  1. Является ли пользователь в центре - избегать жаргона и слова вашей аудитории будет иметь трудно понять;
  2. Является прямым - как сказал Уильям Странк: «Положите заявления в положительной форме. Избегайте ручного, бесцветного, нерешительного и непримиримого языка »;
  3. Опуты, лишние слова - разрезать, разрезать, разрезать.

Как вы можете видеть, эта структура проста и не нуждается в большой мысли.

Источники:

Смежные вопросы