Указывать страницу / строку при выбрасывании кубика()?
Вопрос
Я использую PHP 4, единственный известный мне способ вызвать ошибку и остановить все - это вызвать die().Но на случай, если я столкнусь с ошибкой позже и не вспомню, откуда она взялась, я хотел бы указать страницу и номер строки, на которых произошла функция die() (как это делают другие ошибки php).Есть ли способ сделать это?
Спасибо!
Решение
Вам следует заглянуть в магические константы.
echo __LINE__; // Line number
Вы также можете запустить ошибка_log() незаметно отправлять ошибки в журнал.
Другие советы
Я думаю, вам следует использовать триггер_еррор() чтобы сгенерировать E_USER_ERROR или E_USER_WARNING.Это позволяет вам детально контролировать поведение.Например, вы можете указать, должны ли сообщения отображаться вообще, используя ошибка_reporting(), или обработайте E_USER_WARNING:s явно , используя set_error_handler() .
Самый простой способ - использовать:
echo __FILE__ . ": line " . __LINE__;
die();
Если бы вы использовали PHP5, вы также могли бы использовать Исключения:
throw new Exception("My error message!");
Трассировка стека покажет весь стек вызовов и строку, в которую это было передано.
(РЕДАКТИРОВАТЬ:Спасибо [@John Isaacs] и [@Emil H] за то, что сообщили мне, что Исключения не добавлялись в PHP до PHP5)
В дополнение к предложениям @Jukka Dahlbom и @Ólafur Waage вы также можете рассмотреть возможность использования debug_backtrace()
.
Лучшее использование error_log()
сообщить об ошибке и debug_backtrace()
для отладки.Вы также могли бы написать свою собственную функцию обработки ошибок (см. set_error_handler()
) чтобы объединить и то, и другое.