Что лучшие практики должны зарегистрировать ошибку?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

17
задан John 3 February 2011 в 15:01
поделиться

7 ответов

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

существуют также classloading проблемы с Входом палаты общин.

Выбор один из [многих], регистрирующих API, наиболее широко используемый, вероятно, быть log4j или API Входа Java.

, Если Вы хотите независимость реализации, Вы могли бы хотеть рассмотреть SLF4J исходным автором log4j.

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

9
ответ дан 30 November 2019 в 11:32
поделиться

Вход непосредственно к консоли является ужасающим и откровенно говоря, метка неопытного разработчика. Единственная причина сделать этот вид вещи 1) он не знает о других подходах и/или 2) разработчик не думал один бит о том, что произойдет, когда его код будет развернут на месте производства, и как приложение будет сохраняться в той точке. Контакт с приложением, которое регистрирует 1GB/day или больше абсолютно ненужного входа отладки, невыносим.

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

  1. Различные объекты журнала - Различные классы/модули/и т.д. могут зарегистрироваться к различным регистраторам, таким образом, можно принять решение применить различные конфигурации журнала к различным частям приложения.
  2. Различные уровни журнала - таким образом, можно настроить регистрирующуюся конфигурацию, чтобы только зарегистрировать ошибки в производстве, зарегистрировать все виды отладки и информации о трассировке в среде разработки, и т.д.
  3. Различные выводы журнала - платформа должна позволить Вам настраивать , куда вывод журнала отправляется в, не требуя никаких изменений в кодовой базе. Некоторыми примерами различных мест, в которые Вы могли бы хотеть отправить вывод журнала, являются файлы, файлы, которые переворачиваются на основе даты/размера, баз данных, электронной почты, приемников дистанционной работы, и т.д.
  4. , платформа журнала никогда не должна никогда никогда , выдают любые Исключения или ошибки от регистрирующегося кода. Ваше приложение должно загрузиться или не удается запуститься, потому что платформа журнала не может создать, это - файл журнала, или получите блокировку на файле (если это не критическое требование, возможно, по легальным причинам, по Вашему приложению).

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

24
ответ дан 30 November 2019 в 11:32
поделиться

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

2
ответ дан 30 November 2019 в 11:32
поделиться

Лучшая практика должна использовать java.util.logging платформу

Тогда, можно зарегистрировать сообщения или в этих форматов

log.warning("..");
log.fine("..");
log.finer("..");
log.finest("..");

, Или

log.log(Level.WARNING, "blah blah blah", e);

Тогда можно использовать logging.properties (пример ниже), чтобы переключиться между уровнями входа и сделать все виды умного материала как вход в файлы, с вращением и т.д.

handlers = java.util.logging.ConsoleHandler

.level = WARNING

java.util.logging.ConsoleHandler.level = ALL

com.example.blah = FINE
com.example.testcomponents = FINEST

, Платформ как log4j и другие нужно избежать, по-моему, Java имеет все, в чем Вы уже нуждаетесь.

РЕДАКТИРОВАНИЕ

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

2
ответ дан 30 November 2019 в 11:32
поделиться

Некоторые предложенные лучшие практики

  • Использование платформа журналирования. Это позволит Вам:

    • Легко изменяют место назначения Ваших сообщений журнала
    • сообщения журнала Фильтра на основе серьезности
    • , Поддержка интернационализировала сообщения журнала
  • при использовании Java, тогда , slf4j теперь предпочтен Джакартское свободное городское население, регистрирующееся как регистрирующийся фасад.

  • , Как указано slf4j является фасадом, и необходимо тогда выбрать конкретную реализацию. Или log4j, java.util.logging, или 'простой'.

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

2
ответ дан 30 November 2019 в 11:32
поделиться

Действительно нет никакой лучшей практики для входа ошибки. Это в основном просто должно следовать за последовательным шаблоном (в рамках программного обеспечения/компании/и т.д.), который предоставляет достаточно информации для разыскивания проблемы. Например, Вы могли бы хотеть отслеживать время, метод, параметры, вызывающий метод, и т.д.

, Пока Вы только печатаете "Ошибку в"

0
ответ дан 30 November 2019 в 11:32
поделиться

Апачский общий API входа, как упомянуто выше является большим ресурсом. Вернувшись к Java, существует также поток вывода стандартной погрешности (System.err).

Непосредственно от API Java:

Этот поток уже открыт и готов принять выходные данные.

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

0
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

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