php中错误及异常的统一收集并处理,主要就是用到3个内部方法:
1. register_shutdown_function(callable $callback [, mixed $parameter [, mixed $... ]) //php程序执行完成后执行的函数
它执行机制是:当页面所有php语句都执行完成时,再调用此 函数。注意,在这个时候它是从内存中调用,不是从php页面中调用,所以在此回调函数中不能使用相对路径。以下情况时会触发此函数执行:
1)当页面被用户强制停止时
2)当程序代码运行超时时
3)当php代码执行完成时,代码执行存在异常和错误、警告
在错误收集的使用上,需配合php另一个错误收集函数来实现:error_get_last(),代码如:
另外,需要注意:
1)它可以被多次调用,这些被注册的回调会按照他们注册时的顺序被依次调用
2)当程序由于 exit 、die和未处理的异常、错误结束时,不会触发该函数--此种情况,所以需要后面2个错误/异常函数来捕捉
3)php4后支持注册函数参数传递
2. set_error_handler(array(‘debug’,'apperror’)); //设置一个用户定义的错误处理函数
3. set_exception_handler(array(‘debug’,'appexception’)); //自定义异常处理。
注意:set_error_handler()、set_exception_handler()2个注册的回调函数均不会多次调用,即如果注册多个,以 后一个为生效回调。
通过以上3个函数注册,就可以很好的在一个你想要的地方统一接收项目里所以的错误、异常等信息,并做相应的处理,比如写log或展示友好的错误页等