Автор Тема: set_error_handler  (Прочитано 6434 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« : 25 Июня 2004, 09:24:39 »
Помогите, пожалуйста,

обычно чтобы отлавливать ошибки нужно определить свою функцию error_handler, а потом в нужном месте поставить
set_error_handler("error_handler");

(вроде правильно написал)

Но проблема такая:
function error_handler ($level, $message, $file, $line, context)
{
echo "Уровень ошибки: ".$level."
";
echo "Сообщение: ".$message."
";
echo "Файл: ".$file."
";
echo "Строка: ".$line."
";
}

как получить $level, $message, $file, $line не выводя их на экран

то есть вот пример

set_error_handler("error_handler");
eval($scriptbody);
//а вот здесь мне нужно узнать строку и прочее

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #1 : 25 Июня 2004, 09:38:25 »
Цитировать
Jean:
как получить $level, $message, $file, $line не выводя их на экран

что ты имеешь ввиду под словом "получить"
Цитировать
Jean:
eval($scriptbody);

не используй eval в своих скриптах вообще никогда в жизни, и втои волосы будут мягкими и шелковистыми.

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #2 : 25 Июня 2004, 09:41:23 »
что ты имеешь ввиду под словом "получить"

я имею ввиду записать ее в какую-нибудь переменную, а потом эту переменную использовать, но не выводить на экран просто echo

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #3 : 25 Июня 2004, 10:13:54 »
Цитировать
Jean:
я имею ввиду записать ее в какую-нибудь переменную

тебе подсказать оператор присваивания в пхп?

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #4 : 25 Июня 2004, 10:37:35 »
я наверно, в хлам тупой :) но все таки, вот примерный код :

$o_line = "";

function error_handler ($level, $message, $file, $line, $context)
{
    $o_line = $line;
}


set_error_handler (\'error_handler\');
//код с ошибкой
echo $o_line;


может я что-то не понял - напиши пожалуйста, как это сделать

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #5 : 25 Июня 2004, 10:43:20 »
Jean
тогда уж

function error_handler ($level$message$file$line$context)
{
global 
$o_line;
$o_line $line;
}
AS IS...

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #6 : 25 Июня 2004, 11:22:12 »
спасибо

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #7 : 25 Июня 2004, 13:12:32 »
я считаю, что человеку, незнакомому с проблемой области видимости переменных (т.е. такому, который впервые функцию в глаза видит) рано заниматься собственной обработкой ошибок.
судя по всему, ему нужно всего лишь настроить правильно встроенную обработку ошибок.

[off]wow! козырный номер[/off]

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #8 : 25 Июня 2004, 13:47:23 »
>>судя по всему, ему нужно всего лишь настроить правильно
>>встроенную обработку ошибок.


ну и чтобы ты мне предложил?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #9 : 25 Июня 2004, 14:04:22 »
Цитировать
Jean:
ну и чтобы ты мне предложил?

например подучить матчасть.
AS IS...

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #10 : 25 Июня 2004, 14:09:41 »
не понял, что за матчасть?

я имел ввиду, предложения по поводу правильно встроенной обработки ошибок.

Как еще можно обработать ошибку самому?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #11 : 25 Июня 2004, 14:12:33 »
Цитировать
Jean:
что за матчасть?

http://www.php.net/manual/en/ref.errorfunc.php
AS IS...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #12 : 25 Июня 2004, 14:14:19 »
ты обрабатываешь не ошибки, а сообщения о них. это большая разница. Я, например, не вижу никакого смысла запоминать сообщения.

по мне - так только записывать в лог, чтобы потом программер мог смотреть и исправлять код

Оффлайн Jean

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 113
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #13 : 25 Июня 2004, 14:34:11 »
Цитировать
RomikChef:
ты обрабатываешь не ошибки, а сообщения о них. это большая разница. Я, например, не вижу никакого смысла запоминать сообщения.

по мне - так только записывать в лог, чтобы потом программер мог смотреть и исправлять код


вообще мне не только нужно в лог записывать, но и на экран аккуратно выводить (не в самой error_handler),

потому как эта информация не для программера, а для пользователя, не будет же он в (непонятный ему какой и где) лог лезть

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
set_error_handler
« Ответ #14 : 25 Июня 2004, 14:38:15 »
системные ошибки пхп юзеру сто лет в обед не нужны
что он будет делать с сообщением
cannot open stream - permission denied in ?
распечатает и на стенку повесит?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28