Обработка ошибок по умолчанию, разъясните плз.

sims

Guest
Обработка ошибок по умолчанию, разъясните плз.

Есть, например, такой код:


PHP:
function oops()
{
	echo '<pre>';
	print_r(debug_backtrace());
	echo '</pre>';
	
	return true;
}

include('PEAR.php');

new PEAR_Error ('unknown error', 22, PEAR_ERROR_CALLBACK, "oops", 'userinfo');
В нём всё происходит как и задумывалось - возникает ошибка, и вызывается функция oops();

OK, теперь я хочу сделать так, чтобы при возникновении ошибки - она вызывалась всегда, т.е. установить вызов callback ф-ии oops() по умолчанию.


PHP:
function oops()
{
	echo '<pre>';
	print_r(debug_backtrace());
	echo '</pre>';
	
	return true;
}

include('PEAR.php');

PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "oops");

new PEAR_Error ('unknown error');

и ничего хорошего из этого не происходит, функция oops не вызывается, почему так?


И ещё, в мануале присутствует метод:
PHP:
PEAR::setErrorMode(PEAR_ERROR_CALLBACK, "my_function_handler");
которого в классах PEAR и PEAR_Error нет, он кто вообще?
(пример во введении в базовые классы PEAR)

Просветите пожалуйста.
 

Макс

Старожил PHPClub
PHP:
function oops() 
{ 
    echo '<pre>'; 
    print_r(debug_backtrace()); 
    echo '</pre>'; 
     
    return true; 
} 

include('PEAR.php'); 

PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "oops"); 
PEAR::raiseError("test some error"); // <<<<<
PS
мануал по pear я не читаю, но у меня на компе большая часть pear-репозитария и поиск по setErrorMode - не дал никаких результатов, то есть такого кода в классах не найдено.
Где ты увидел этот метод ? Точную ссылку , плиз

-~{}~ 25.05.04 22:44:

в онлайн-мануале тоже такого метода не вижу:
http://pear.php.net/manual/en/core.pear.php
 

sims

Guest
Спасибо!

setErrorMode - Вот тут последний на странице пример
http://pear.php.net/manual/ru/core.pear.pear.intro.php
 

kvn

programmer
PHP:
function oops(&$error_obj) 
{ 
    echo '<pre>'; 
    print_r($error_obj); 
    echo '</pre>'; 
      
    return true; 
} 

include('PEAR.php'); 

PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "oops"); 
PEAR::throwError("test some error"); // <<<<<
так более правильно.
и еще, debug_bugtrace() PEAR вызовет сам (если такая ф-ция есть), и он будет внутри объекта ошибки, получить его: $error_obj->getBacktrace().

http://php4you.kiev.ua/faq/section7.html#73
 

tony2001

TeaM PHPClub
>И ещё, в мануале присутствует метод:
>PEAR::setErrorMode(PEAR_ERROR_CALLBACK, "my_function_handler");
>которого в классах PEAR и PEAR_Error нет, он кто вообще?

fixed, thanks!
 
Сверху