|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
Feldmarschall |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Отвечая на вопросы в форуме, я заметил одну вещь.
Новички часто не понимают значения сообщения об ошибке. Просто не обращают внимания на его текст. Подход у многих такой: "Есть код, он выдает ошибку. Что в коде исправить?". При этом даже не пишут - какая именно ошибка! Текст ошибки просто игнорируется. Не делается даже попытки им как-то воспользоваться. Или, если сообщения на экране нет - то найти его и прочитать. То есть, это принципиальный момент: сообщение об ошибке не рассматривается, как помощь при её исправлении. Вообще. При том, что это самый главный инструмент исправления ошибки . Именно эту мысль я и хочу донести до читателей: важно сообщение об ошибке читать, и пытаться понять, что в нем написано. Пытаться исправить код не читая сообщение об ошибке - это каменный век! Это бессмысленная трата времени. Именно поэтому опытный программист не будет пытаться угадывать - почему не работает его код, а сначала постарается увидеть сообщение об ошибке. Именно поэтому опытный программист не будет пытаться угадывать, какая именно проблема в коде, который запостили на форум - он попросит привести текст сообщения об ошибке. Ведь в нем, в этом сообщении, все написано! Разберем типичное сообщение об ошибке:
Во-первых, в сообщении содержится очень важная информация - имя файла и номер строки в нем. Это уже очень сильно может помочь - показать, куда смотреть в огромном коде на 500 строк. Но главное - это текст:
Да, надо знать английский язык. Без этого - никуда. Но если знать, то все сразу станет ясно: переменная, к которой мы пытаемся обратиться, не существует. И дается её имя - $var Осталось разобраться, почему переменной нету, и исправить код так, чтобы она появилась и имела нужное значение. Точно так же работаем со всеми другими ошибками - читаем текст и смотрим строку, в которой ошибка. Кроме PHP об ошибках нам могут сообщать другие элементы системы - SQL Сервер, веб-сервер. Надо знать, как получить ошибки от них. Поэтому несколько конкретных рекомендаций:
Это сообщение отредактировал(а) Feldmarschall - 24.7.2008, 23:32 |
||||
|
|||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
В "стандартном" сообщении об ошибке обычно сообщается только место(строка и имя файла), в котором происходит сбой.
Если ошибка не критическая(до E_WARNING) включительно, то можно установить собственный обработчик ошибок через set_error_handler, в котором при помощи debug_backtrace сделать вывод всего стека вызовов: кто, когда и откуда первоначально сделал вызов, который, в конце концов, привел к ошибке. |
|||
|
||||
MuToGeN |
|
|||
Лесник Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 7 Всего: 32 |
1. Еще лучше не забывать о том, что для вас как для разработчика это просто сообщение об ошибке, но для кого-то другого оно может сказать "вот в этом скрипте есть такая-то уязвимость". Это особенно актуально для тех, у кого программирование на PHP не просто увлечение, а профессия. Т.е. вывод ошибок в браузер полезен только на этапе разработки, а когда проект запускается в "боевом" режиме, то это стоит отключать (я обычно использую перехват того, что можно перехватить, через set_error_handler() и set_exception_handler() с последующей отправкой на мой e-mail, и логирование всего, что перехватить нельзя - директивы конфига log_errors и log_file_name, error_log() итп).
2. Точнее, E_ALL | E_STRICT. Во-первых это поможет понять, в чем именно стоит усовершенствовать свои знания (да, даже матерым профи порой приходится читать мануалы по концепциям ООП), во-вторых - как недавно было упомянуто на форуме, в PHP6 бит E_STRICT будет включен в E_ALL. -------------------- Three pings for the token rings, Five pings for the UNIX machines, Hundred pings for the broken links, One special ping to check them all Through Simple Network Management Protocol! |
|||
|
||||
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |