Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Да - это известно как printf()
отладка, названный в честь повсеместной функции C:
Используемый для описания отладки работы, сделанной путем вставки команд, которые производят более или менее тщательно выбранную информацию о статусе в ключевых пунктах в процессе выполнения программы, замечая что информация и выведение что случилось на основе той информации.
-- printf () debugging@everything2
Собственные пользователи других языков несомненно обращаются к нему печатью по умолчанию / журнал / или прослеживают команду, доступную для их предпочтительной платформы кодирования, но я услышал "printf ()" имя, привыкшее к refere к этой технике на многих языках кроме C. Возможно, это происходит из-за его истории: в то время как ОСНОВНОЙ и ФОРТРАН имел основной, но пригодный к эксплуатации PRINT
команды, C обычно требовали, чтобы немного больше работы отформатировало различные типы данных: printf()
был (и часто все еще), безусловно самые удобные средства с этой целью, обеспечивая много встроенных параметров форматирования. Его кузен, fprintf()
, берет другой параметр, поток для записи в: это позволило осторожному "отладчику" направлять диагностическую информацию к stderr
(возможно самостоятельно перенаправленный к файлу журнала) при оставлении вывода программы неповрежденным.
Хотя часто смотрится сверху пользователями современного программного обеспечения отладки, printf () отладка продолжает оказываться необходимый: дико популярный инструмент FireBug для веб-браузера Firefox (и подобные инструменты, теперь доступные для других браузеров), создаются вокруг консоли, в которую сценарии веб-страницы могут зарегистрировать ошибки или сообщения диагностики, содержащие отформатированные данные.
Я всегда знал это термином 'быстрая-и-грязная отладка', или просто 'грязная отладка' короче говоря.
(Хороший вход невероятно ценен для отладки проблем в рабочих производственных системах. Много бесполезных подробных операторов печати не, но вход чего-то интересного, когда что-то важное или неожиданное произошло, невероятно важно. Если единственный способ, которым Вы знаете, как отладить проблемы, с отладчиком, Вы собираетесь оказаться во вполне трудном месте, когда сервис, который Вы создали, повреждается для некоторых Ваших пользователей, но Вы не можете воспроизвести проблему локально.)
Кроме того, в.Net можно добавить отладочные операторы (я думаю, что это на самом деле - Отладка. WriteLine) для вывода к консоли. Эти statments только включены в сборки отладки - компилятор автоматически пропустит их, когда Вы сделаете сборку конечных версий.
Я обычно называю его трассировкой.
Примечание, что в Visual Studio можно установить точки останова, которые просто добавляют трассировку. Щелкните правой кнопкой по точке останова, выберите, "когда поражено..." и проверьте опцию "Print a message".
Я также услышал термин "MessageBox, отладив" от толпы VB для обращения к этому 'стилю' 'отладки'.
В том же смысле как исследовательское программирование , мне нравится называть его исследовательская отладка . Это следует, когда отладчик не достаточно мощен, чтобы исследовать составные типы в программе или вызвать функции помощника отдельно, или Вы просто не знаете достаточно об ошибке для использования, сказали функции непосредственно.
Место Ваших штанов, отлаживая :)
, Когда Вы находитесь во встроенной системе, когда Вы в новейшем и языке, Вы кодируете в еще, не имеет отладчика, когда Ваш отладчик ведет себя странно, и Вы хотите восстановить некоторую исправность, и Вы хотите понять, как повторная входимость работает в многопоточном коде....
я и мои помощники команды, называющие его "Отлаживающий Oldschool".
Я думал, что следующая кавычка будет кстати:
"Самое эффективное средство отладки является все еще осторожной мыслью, вместе с рассудительно помещенными операторами печати".
Я услышал, что это звонило Пещерный человек, Отлаживающий
Я встроенные системы часто единственный метод для оснащения кода. К сожалению, печать занимает время и производит поток в реальном времени системы. Так мы также инструмент через "трассировку", где информация о состоянии системы (функциональный выход записи и т.д.) записана во внутренний буфер, который будет выведен и проанализирован позже. Настоящие встроенные программисты могут отладить путем мигания светодиодом;)