Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Автоматически зарегистрируйте свои 500 с, тот путь:
Joel рекомендует даже идти, автоматически создавая тикеты в Вашем средстве отслеживания ошибки, когда Ваше приложение испытывает отказ. Лично, я создаю (частный) канал RSS с stacktraces, URL, и т.д. что разработчики могут подписаться на.
отслеживания стека Показа Вашим пользователям, с другой стороны, могли возможно пропустить информацию, которую злонамеренные пользователи могли использовать для нападения на сайт. Чрезмерно подробные сообщения об ошибках являются одной из классических стартовых площадок для атак с использованием кода на SQL.
Редактирование (добавленный пример кода для получения traceback):
можно получить информацию об исключении от вызова sys.exc_info. В то время как форматирование traceback для дисплея прибывает из traceback модуля:
import traceback
import sys
try:
raise Exception("Message")
except:
type, value, tb = sys.exc_info()
print >> sys.stderr, type.__name__, ":", value
print >> sys.stderr, '\n'.join(traceback.format_tb(tb))
Печать:
Exception : Message
File "exception.py", line 5, in <module>
raise Exception("Message")
Как @zacherates говорит, Вы действительно не хотите отображать stacktrace своим пользователям. Самый легкий подход к этой проблеме - то, что Django делает по умолчанию, если Вы имеете самостоятельно и Ваши разработчики, перечисленные в установке ADMINS с адресами электронной почты; это посылает электронное письмо всем в том списке с полным отслеживанием стека (и больше) каждый раз существует 500 ошибок с ОТЛАДКОЙ = Ложь.
Вы могли звонить sys.exc_info()
в пользовательский обработчик исключений. Но я не рекомендую это. Django может послать Вам электронные письма для исключений.