2012-06-19 2 views
0

У меня есть этот код, как можно установить error_handler ко всем функциям. прямо сейчас error_handler вызывается только в том случае, если ошибка возникает вне foo1 & foo2.global set error_handler

set_error_handler('error_handler',-1 & ~E_NOTICE & ~E_USER_NOTICE); 

function error_handler($exception) { 
// log the error 
} 


function foo1(){ 
throw new Exception("Error validating user input."); 
     exit(0); 
} 


function foo2(){ 
throw new Exception("Error validating user input."); 
     exit(0); 
} 
+0

Эти два 'выхода (0);' не имеют смысла. Этот код никогда не выполняется. Кроме того, параметр вашей функции 'error_handler' на самом деле неверен. – hakre

ответ

0

set_error_handler установлен глобальный обработчик ошибок, это уже для всех функций. Для использования set_error_handler вы должны использовать trigger_error, чтобы вызвать ошибку, не выбрасывая исключение, неперехваченное исключение вызовет только фатальную ошибку.

Вы используете Exception в своей функции, тогда это должно быть set_exception_handler.

0

error_handler только вызывается для ошибок, вызванных самим PHP или с использованием trigger_error.

Но ваши функции foo1() и foo2() исключают броски; к ним придется обращаться set_exception_handler().

Смежные вопросы