Как каждый пишет хорошие сообщения об ошибках?

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

40
задан Mr Lister 2 May 2012 в 10:33
поделиться

13 ответов

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

Пример:
"Извините, файл не мог быть открыт. Проверьте, что файл уже не открыт другой программой, и попробуйте еще раз".

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

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

27
ответ дан Scott Langham 27 November 2019 в 01:28
поделиться

От возможных пользователей.

0
ответ дан cciotti 27 November 2019 в 01:28
поделиться

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

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

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

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

1
ответ дан JB King 27 November 2019 в 01:28
поделиться

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

1
ответ дан pookleblinky 27 November 2019 в 01:28
поделиться

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

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

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

2
ответ дан Jim C 27 November 2019 в 01:28
поделиться

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

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

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

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

"Неожиданная ошибка произошла".

Тогда в зависимости от установки (dev включают или прочь), мы или вывод dev информация или больше удобной для пользователя концом информации ontop этого.

2
ответ дан Quibblesome 27 November 2019 в 01:28
поделиться

Сообщения об ошибках должны:

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

От точки технической поддержки речи, это также важно это сообщения об ошибках быть уникальным. Если пользователь может генерировать тот же "файл, не мог бы быть открыт" error in six different ways, it makes it difficult for technical support people to figure out exactly what the user is doing. So, error messages should be unique for each different kind of error and if possible supply an error code or number so that support people know where to look for the problem.

We have found that when error messages include an error code, it helps with technical support. When users report error messages back to support people, they often mix up or mis-report verbal error messages. But, if the message includes an error number they are very good at reporting the exact error, like, "Я получил 8 512 ошибок, когда я пытался распечатать отчет".

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

2
ответ дан Kluge 27 November 2019 в 01:28
поделиться

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

Первый, требования для сообщений конечного пользователя:

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

Затем, требования для сообщений специалиста по поддержке:

  • Хочет быть превентивным, не реактивный
  • не хочет поражать “brick wall”, проблема
  • не хочет лавинно рассылаться сообщениями.

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

  • Хочет простую умственную модель для использования Вашего кода
  • , Ожидает, что Ваш компонент к “just work”
  • Хочет полезную информацию когда это работа doesn’t.

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

3
ответ дан RoadWarrior 27 November 2019 в 01:28
поделиться

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

8
ответ дан JacquesB 27 November 2019 в 01:28
поделиться

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

А хороший пользователь, сталкивающийся с сообщением об ошибке:

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

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

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

9
ответ дан Joe Basirico 27 November 2019 в 01:28
поделиться

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

я думаю, что они важны в целом:

  • Метка времени
  • Уровень серьезности
  • , что пошло неправильно
  • , Отвечает на вопросы, "я должен принять меры?" и "если так, что действие?"
  • деталь dev-уровня (не заметно, если направление пользователя)
  • последовательный формат и условия

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

12
ответ дан Michael Easter 27 November 2019 в 01:28
поделиться

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

  • не представляют сообщений, которые могли быть угрозой безопасности, как пароли и такой. Это особенно важно для веб-приложений, когда такие вещи не уже доступны посредством декомпиляции.
  • имейте весь корректируемый пользовательский видимый текст, если Вы уже не маниакальная грамматика и знаток написания.
3
ответ дан Jeffrey L Whitledge 27 November 2019 в 01:28
поделиться

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

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

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

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

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

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

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

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

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

6
ответ дан 27 November 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: