我想用php创建一个简单的异常和错误处理程序,所以我谷歌类似的东西,我发现这3个PHP函数:
set_exception_handler(functionName)
set_error_handler(functionName)
register_shutdown_function(functionName)
但似乎我无法得到我想要的结果,这就是原因:
我做了3个简单的测试:
TEST 1
function exceptionHandler(Exception $e){
echo 'this is exception: '.$e->getMessage();
}
function errorHandler($errno, $errstr, $errfile, $errline){
echo 'this is error';
}
set_exception_handler("exceptionHandler");
set_error_handler("errorHandler");
register_shutdown_function('errorHandler');
throw new Exception('excepp');
结果:异常处理程序正常工作并处理异常 的 TEST2
function exceptionHandler(Exception $e){
echo 'this is exception: '.$e->getMessage();
}
function errorHandler($errno, $errstr, $errfile, $errline){
echo 'this is error';
}
set_exception_handler("exceptionHandler");
set_error_handler("errorHandler");
register_shutdown_function('errorHandler');
$a = $foo;//---unkown $foo variable
结果:错误处理程序正常运行并处理错误 的 TEST3
function exceptionHandler(Exception $e){
echo 'this is exception: '.$e->getMessage();
}
function errorHandler($errno, $errstr, $errfile, $errline){
echo 'this is error';
}
set_exception_handler("exceptionHandler");
set_error_handler("errorHandler");
register_shutdown_function('errorHandler');
$a = $foo();//---unkown $foo() function
结果:错误处理程序无法按预期工作,我得到了这个"未处理"错误。
的 TEST4
function exceptionHandler(Exception $e){
echo 'this is exception: '.$e->getMessage();
}
function errorHandler($errno, $errstr, $errfile, $errline){
echo 'this is error';
}
set_exception_handler("exceptionHandler");
set_error_handler("errorHandler");
register_shutdown_function('errorHandler');
$a = $foo //---forgot the ';' (Parse error)
结果:这里错误处理程序也没有按预期工作,我得到了这个。
所以我的目标是将任何类型的错误或异常重定向到特定的类并显示更优雅的东西,但正如您所看到的,我无法处理所有错误,所以也许我在这里遗漏了一些东西。希望你们帮助我。