Loading... # [php全局异常/错误处理](https://blog.p2hp.com/archives/1664) php自有try{throw{}}catch{}异常/错误捕获系统,难以在生产环境中运用;生产环境中,我们一般要求,一旦出现异常/错误,php立刻结束脚本,向访客浏览器输出出错提示,并通过自定义函数向管理员发送消息 以下就是php生产环境中的异常/错误处理方法 工具/原料 无 方法/步骤 在php代码开头处,增加代码:set_error_handler ( 'customerror' ); 这是php的常规错误捕获函数,一旦程序运行过程中出现常规错误,customerror()函数就会被调用;customerror()运行完毕,php程序继续运行,因此在customerror()函数中的最后一句,需要die(); 结束脚本 customerror()有5个参数,这些参数会由set_error_handler()自动提供 customerror()函数的具体书写形式: function customerror($error_level,$error_message,$error_file,$error_line,$error_context) { <--这里就是错误处理脚本--> die();//终止脚本 } 用set_exception_handler ( 'customexception' ); 捕获php运行过程中产生的第一个异常,因为该函数一旦捕获异常,就会停止执行脚本,因此只能捕获到第一个异常,捕获到异常后,会调用customexception()函数 customexception()有一个参数,由set_exception_handler()自动提供 customexception()函数的具体书写形式: function customexception($exception) { <--这里就是错误处理脚本--> } 用register_shutdown_function('customend'); 这个不是用来处理错误的,这是一个在php脚本结束时自动调用一个函数的函数,因此我们可以利用它捕获能导致php脚本停止运行的严重错误(这类错误是不能被set_error_handler ()捕获的) 一旦脚本停止运行,customend()函数就会被调用,在customend()函数中通过error_get_last()来判断脚本是正常结束还是发生严重错误而中断,如果是发生严重错误而中断,则运行错误处理程序 customend()函数没有参数 customend()函数的具体书写形式如下: function customend(){ if(error_get_last()){ <--这里就是错误处理脚本--> } } php全局异常/错误处理 END 注意事项 set_error_handler () 还有第二个可省略参数,来确定低于哪个级别的错误不会被拦截 最后修改:2023 年 08 月 08 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏