Укажите страницу / строку при броске die ()? - PullRequest
2 голосов
/ 25 марта 2009

Я использую PHP 4, единственный известный мне способ вызвать ошибку и остановить все - это вызвать die (). Но в случае, если я столкнусь с ошибкой позже и не помню, откуда она появилась, я бы хотел указать страницу и номер строки, на которой произошла die () (как это делают другие ошибки php). Есть ли способ сделать это?

Спасибо!

Ответы [ 5 ]

6 голосов
/ 25 марта 2009

Вы должны посмотреть на магические константы.

echo __LINE__; // Line number

Вы также можете запустить error_log () , чтобы спокойно отправлять ошибки в журнал.

4 голосов
/ 25 марта 2009

Я думаю, вы должны использовать trigger_error () для генерации E_USER_ERROR или E_USER_WARNING. Это позволяет вам контролировать поведение в деталях. Например, вы можете указать, следует ли вообще показывать сообщения, используя error_reporting () , или обрабатывать E_USER_WARNING: s явно используя set_error_handler ().

4 голосов
/ 25 марта 2009

Самый простой способ - использовать:

echo __FILE__ . ": line " . __LINE__;
die();

Если бы вы использовали PHP5, вы могли бы также использовать исключения:

throw new Exception("My error message!");

Трассировка стека покажет весь стек вызовов и строку, на которую он был брошен.

(РЕДАКТИРОВАТЬ: Спасибо [@John Isaacs] и [@Emil H] за сообщение, что исключения не были добавлены в PHP до PHP5)

2 голосов
/ 25 марта 2009

В дополнение к предложениям @Jukka Dahlbom и @ Ólafur Waage вы также можете рассмотреть возможность использования debug_backtrace().

0 голосов
/ 25 марта 2009

Лучше использовать error_log() для сообщения об ошибке и debug_backtrace() для отладки. Вы также можете написать свою собственную функцию обработки ошибок (см. set_error_handler()), чтобы объединить оба.

...