Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Пример:
"Извините, файл не мог быть открыт. Проверьте, что файл уже не открыт другой программой, и попробуйте еще раз".
, Если бы существуют дополнительные детали, которые испугали бы пользователя, такого как код ошибки или что-то еще, только разработчик поймет, не показывайте им. Запишите им в файл журнала или имейте кнопку деталей, которая может быть нажата для получения до них.
я предполагаю, что Вы говорите о показе сообщений об ошибках пользователям в окнах сообщения или на экране.
Может быть несколько различных контекстов здесь для замечания (хотя я уверен, что это было упомянуто много раз):
1), Если мы говорим о веб-сайте, имеющем необходимость дать "Ой, что-то плохо произошло", сообщение тогда должен быть простой язык, чтобы сказать пользователю, что ошибка произошла, попробуйте еще раз и если существуют все еще проблемы для контакта с поддержкой в и тому подобное...
2), Если мы говорим о входе исключения, добавленный код для sys администраторов и разработчиков для чтения тогда вопроса становится большим количеством взятия сообщения исключения и отслеживания стека, которое будет зарегистрировано или в файле журнала, электронном письме или в средстве просмотра события так, чтобы это могло быть обработано по-другому в зависимости от того, насколько срочный он, что кто-то изучает это.
3), Если мы говорим о записи сообщения для исключения тогда, мое предложение должно ясно отметить, какое состояние ошибки было встречено, например, является там нулевой ссылкой, где не должно быть или там что-то худшее как файл, который должен существовать, отсутствует, наряду с серьезностью ошибки, например, может приложение продолжать бежать или если это выходит к ошибочной странице в этом условии.
Помните, прежде всего, что конечный пользователь не заботится о технологических основных элементах. Только, ли это работает. Когда это не работает, он только заботится о его эффекте на то, что они пытаются сделать. Полезное сообщение об ошибке должно остаться сфокусированным на что , не почему .
Сообщения об ошибках для конечных пользователей и также для тех, кто должен поддержать код
Сначала для конечных пользователей, сказать им, что сделать. Это может просто совершить нападки, входят, чтобы продолжить, попробовать еще раз, закрыть и перезапустить, перезагрузить ПК.
112-секундный для специалистов по обслуживанию, включайте столько информации об ошибке, сколько Вы можете. Никогда нет слишком много. Я лично предпочитаю файл журнала для этого вместо сообщения об ошибке. Еще лучше должен включать путь к конечному пользователю, чтобы послать Вам по электронной почте содержание журнала из приложения.
На это обычно стоит указать на общую причину проблемы, поскольку это поможет пользователю в 99,9% ошибочных случаев.
, Например, у нас есть два направления для проблем инициализации. Каждый ловит исключения конфигурации, который указывает:
"Распознанное исключение произошло. Это может быть проблемой с конфигурацией"
и другой для неожиданного:
"Неожиданная ошибка произошла".
Тогда в зависимости от установки (dev включают или прочь), мы или вывод dev информация или больше удобной для пользователя концом информации ontop этого.
Сообщения об ошибках должны:
От точки технической поддержки речи, это также важно это сообщения об ошибках быть уникальным. Если пользователь может генерировать тот же "файл, не мог бы быть открыт" 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 ошибок, когда я пытался распечатать отчет".
, Когда возможно, это также помогает сохранить журнал ошибок. Много раз пользователи будут сообщать об ошибках, когда они попробовали конкретную операцию, но они не будут помнить точно, какова ошибка была. Если существует журнал ошибок, с которым могут консультироваться люди технической поддержки, он делает намного легче определить проблему.
Для записи хороших сообщений об ошибках необходимо думать о каждой аудитории. Как только Вы понимаете аудиторию, намного легче разработать сообщения об ошибках.
Первый, требования для сообщений конечного пользователя:
Затем, требования для сообщений специалиста по поддержке:
Наконец, требования для сообщений разработчика поддержки:
пример сообщения об ошибке это очень плохо для конечного пользователя, но это могло бы быть разумно для разработчика, "Кэш задержки, с которым сталкиваются с исходящими заголовками".:-)
Для конечных пользователей: Скажите пользователю, что сделать. Пользователь должен изменить некоторое входное значение, повторить за 5 минут или поддержку вызова?
Я работаю у дилера ценных бумаг программного обеспечения, таким образом, мой ответ может существенно отличаться из некоторых вышеупомянутых ответов.
А хороший пользователь, сталкивающийся с сообщением об ошибке:
Сбалансированный между тем, чтобы быть универсальным и конкретным - Вы хотите дать пользователю достаточно информации, что они могут исправить свою ошибку и идти дальше, но иметь в виду, что взломщик мог использовать эти те же сообщения об ошибках для нападения на сайт. Хорошим примером этого является управление входом в систему, в котором возвращается сообщение об ошибке, “incorrect пароль для пользователя joe” или “user joe не существует в этом system”, это говорит взломщику, что они находятся на пути обнаружения корректных пользователей. Который, когда у Вас нет ни одного, имя пользователя или пароль являются залогом успеха.
Говорит пользователю, что пошло не так, как надо †“, снова это сбалансировано между универсальным и определенным. Пользователь никогда не должен видеть сообщение об ошибке ODBC, но могло бы быть полезно для них знать, что ошибка была Вашим отказом и что они должны попробовать еще раз через несколько минут. Скажите пользователю, что они могут сделать для помощи †“, если у Вас будет система регистрации бэкенда (который Вы должны) регистрировать все, что Вы думаете, то будет полезно, затем генерирует идентификатор, который можно предоставить пользователю, таким образом, они могут назвать или послать Вам по электронной почте и сказать Вам точные размноженные шаги. Вы могли также автоматизировать это путем представления формы представления ошибки, когда ошибка происходит.
Быть последовательным †“используют ошибочную таблицу поиска, чтобы гарантировать, что все Ваши ошибки являются тем же (для той же проблемы) и что они правильно написаны. Опечатки, орфографические ошибки и грамматические ошибки не могут быть допущены в производственном программном обеспечении.
Вы имеете в виду направление пользователя или в файле журнала для admin/dev штата?
я думаю, что они важны в целом:
я думаю, что все они важны, но выдающееся положение изменится в зависимости от аудитории (как dmckee указывает). Другая подсказка (в целом) должна ответить на 5 Вт (кто, что... и т.д.)
К тому, что было уже сказано, я добавлю:
Очевидно, что предотвращение ошибок лучше всего. Всегда предоставляйте пользователю достаточно подсказок для успешного выполнения задач (например, объясните необходимое форматирование полей ввода данных). Тем не менее, «человеку свойственно ошибаться ...» и (применяя принципы удобства использования к ошибкам в веб-приложении) прощение является целью.
Есть три основных функции сообщений об ошибках:
1. Обратите внимание - во-первых, чтобы убедиться в эффективности, пользователь должен увидеть его
2. Опишите ошибку - проинформируйте пользователя о том, что пошло не так
3. Предложить восстановление - дать полезные предложения по исправлению ошибки и продолжить
С учетом всего сказанного, я хотел бы скомпилировать что-нибудь с более подробной информацией, особенно с примерами хороших и плохих сообщений об ошибках.