Указывать страницу / строку при выбрасывании кубика()?

StackOverflow https://stackoverflow.com/questions/682358

  •  22-08-2019
  •  | 
  •  

Вопрос

Я использую 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()) чтобы объединить и то, и другое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top