php 错误机制
来源:互联网 发布:日本js蓝光眼镜 编辑:程序博客网 时间:2024/06/05 23:54
<?php/* * 2014年12月30日自己总结的关于php error 的知识和最佳实践 * * 先从错误产生流程说起: * php脚本运行--->脚本出错或主动报错---->触发php error 机制 * ---->机制判断:是否有自定义的错误处理机制?--->(是)使用自定义的机制---->(否)使用php内部的错误机制 *---->根据错误处理情况,决定脚本是退出还是继续运行 * * 再说细节: * * ----主动报错---- *trigger_error(‘我的报错信息’,【错误级别】); *脚本中,只要执行了这个函数,就会触发上面流程,比如:我传个参数,如果比3大,我就报错! *if($var>3){ * trigger_error(‘数太大了,换一个’,E_USER_WARNING); *} * * ----自定义错误机制------ * 我们可以单独写成一个自定义错误处理文件error_handler.php,然后每段脚本都加载它,这样我们就可以用自己的错误机制,而不用php内部的了! * 如果这个文件写的好,对开发来说是非常有利的! * * 文件推荐写法: * error_handler.php * * 先根据错误级别,给每个 级别写 上自定义处理函数 * function E_ERROR_handler($error_level,$error_message,【$error_file,$error_line,$error_context】){ * 函数里面写错误处理代码! * 一般会写的东西: * 错误发生的时间:$time=date("Y-m-d H:i:s"); * 错误级别(数值):$error_level; * 传过来的错误信息:$error_message; * 错误发生的文件名:$error_file; * 错误发生的行数:$error_line; * 错误发生时涉及到的变量数组:$error_context; * 你可以根据$error_level,或者$error_message的值,来决定如何处理错误 * if($error_level==8){....} * if($error_message=="数据库错误"){...} * 这些东西,你可以选择,将它们打印在屏幕上,然后退出脚本/继续脚本 * echo .....;或者exit(....); * 但是我建议你将它们都分门别类的记录下来;首先,将上面信息链接成字符串 * $error_log; * 然后,再存到文件中去! * error_log($error_log;3,'/var/php/error_log/E_ERROR_log.log'); * } * function E_WARNING_handler(){....} * function E_NOTICE_handler(){....} * ..... * 再将每个自定义好的函数,根据错误处理级别,注册到php error 处理机制中去! * set_error_handler('E_ERROR_handler',E_ERROR); * set_error_handler('E_NOTICE_handler',E_NOTICE); * ..... * * ----题后话----- * 错误处理的原理和形式是不难的,难点是你如何设计自定义错误处理的handler函数 * -----附录(错误级别)------值 常量 描述2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。8 E_NOTICE Run-time 通知。脚本发现可能有错误发生,但也可能在脚本正常运行时发生。256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())8191 E_ALL 所有错误和警告,除级别 E_STRICT 以外。(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分) * * ----附录(php.ini关于error的设置)----- * 开发环境: * error_reporting=E_ALL * display_errors=On * html_errors=On * log_errors=Off * 上线运营的系统: * error_reporting=E_ALL & ~E_NOTICE * display_errors=Off * html_errors=Off * log_errors=On * error_log="/var/log/httpd/my-php-error.log" * ignore_repeated_errors=on * ignore_repeate_source=on * * * * * * * * * */
0 0
- php 错误机制
- PHP 错误机制
- PHP 自定义错误机制
- PHP错误机制
- php异常、错误处理机制
- php异常、错误处理机制
- PHP的错误机制总结
- PHP的错误机制总结
- php中的错误处理机制
- PHP 的错误机制总结
- PHP的错误机制总结
- php 程序错误处理机制
- PHP的错误机制总结
- PHP的错误处理机制
- PHP错误处理机制抛出错误类型
- PHP中的错误处理、异常处理机制
- PHP中的错误处理、异常处理机制
- PHP中的错误处理、异常处理机制
- 中级篇——斐波那契数列详解
- TCP的拥塞机制
- 解决E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NoSuchFieldError
- iphone开发之表格组件UITableView的使用(三)通过加载plist文件字典转模型方式展示分组数据
- 【SBT】 POJ 3481 Double Queue
- php 错误机制
- 注释??
- 第二届全国高校SDN网络应用创新大赛获奖名单出炉
- Android常用工具类
- 显示隐藏文件(终端)
- J版OpenStack错误libvirtError: Invalid value 'xx-tt,yy-zz' for 'cpuset.cpus': Invalid Argument解决
- Git的使用八(远程仓库)仅限Mac亲测
- Android应用本地拒绝服务漏洞浅析
- iOS---Xcode6.1标准Framework静态库制作方法