我有这段代码,如何将error_handler设置为所有函数。现在只有在foo1和&amp ;;之外发生错误时才会调用error_handler。 foo2的。
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)
set_error_handler
设置了全局错误处理程序,它已经适用于所有函数。
对于使用set_error_handler
,您应该使用trigger_error
来触发错误,而不是抛出异常,未被捕获的异常只会导致致命错误。
您在函数中使用Exception
,然后它应该是set_exception_handler。
答案 1 :(得分:0)
error_handler
仅针对由PHP本身或使用trigger_error
触发的错误进行调用。
但是您的foo1()
和foo2()
函数会抛出异常;那些必须由set_exception_handler()
处理。