PHP的错误处理
来源:互联网 发布:知乎 经典 编辑:程序博客网 时间:2024/05/21 05:42
php的错误处理方法可以通过以下方式重写(在代码开始的地方自定义即可):
error_reporting(0);//0为不输出PHP自带的错误输出,E_ALL为所有的警告和错误都输出 set_error_handler([__CLASS__, 'appError']); set_exception_handler([__CLASS__, 'appException']); register_shutdown_function([__CLASS__, 'appShutdown']);
CLASS就是当前类了(当然也可以写别的类),然后依次介绍下面的三个异常处理方法:
set_error_handler
字面意思就是自定义错误处理,也就是程序错误会使用这里自定义的错误处理方法,示例如下:
/** * Error Handler * @param integer $errno 错误编号 * @param integer $errstr 详细错误信息 * @param string $errfile 出错的文件 * @param integer $errline 出错行号 * @param array $errcontext */ public static function appError($errno, $errstr, $errfile = '', $errline = 0, $errcontext = []) { switch ($errno) { case E_ERROR: case E_PARSE: case E_CORE_ERROR: case E_COMPILE_ERROR: case E_USER_ERROR: ob_end_clean(); $errorStr = "$errstr ".$errfile." 第 $errline 行."; self::halt($errorStr); break; default: if(!empty(ob_get_contents())){ //清空缓存区 ob_end_clean(); } $errorStr = "[$errno] $errstr ".$errfile." 第 $errline 行."; require SUNNY_PATH."tpl/error.php"; exit; break; } }
set_exception_handler
自定义的异常处理,示例如下
/** * Exception Handler * @param \Exception|\Throwable $e */ public static function appException($e) { if (!$e instanceof \Exception) { $e = new \Exception($e); } if (IS_CLI) { echo $e->getMessage().PHP_EOL;die; } else { if(!empty(ob_get_contents())){ //清空缓存区 ob_end_clean(); } $errorStr = $e->getMessage(); require SUNNY_PATH."tpl/error.php"; exit; } }
register_shutdown_function
程序中断异常处理,示例如下:
/** * Shutdown Handler */ public static function appShutdown() { if ($e = error_get_last()) { switch($e['type']){ case E_ERROR: case E_PARSE: case E_CORE_ERROR: case E_COMPILE_ERROR: case E_USER_ERROR: self::halt($e); break; } } }
以上示例参考TP的错误处理,不过是参考的TP3
当然,自己可以任意写处理方法
0 0
- PHP的错误处理
- PHP的错误处理
- PHP的错误处理机制
- php的错误处理和异常处理
- php 的错误与异常处理(一)错误处理
- php.ini的错误处理推荐设置
- php gerr 统一的错误处理 v0
- 12-php中的错误的处理
- 13-php中的错误的处理2
- PHP内置的两个错误处理函数
- PHP 的错误和异常处理
- php的错误和异常处理
- PHP的错误和异常处理
- PHP的错误和异常处理总结
- 【异常和错误】PHP的异常和错误处理【原创】
- PHP 错误处理
- PHP 错误处理
- PHP 业务错误处理
- Base64编码原理
- 数据结构实验之查找二:平衡二叉树
- Ubuntu安装eclipse和CDT
- Window下Intellij Idea本地hadoop运行环境
- 【Matlab图像处理】截取图像中的矩形区域(可不平行于坐标轴)并保存为图片
- PHP的错误处理
- 按字节寻址和按字寻址
- [51nod 1430]奇偶游戏
- Android实训案例(七)——四大组件之一Service初步了解,实现通话录音功能,抽调接口
- BP神经网络
- Install Postgresql
- 如何恰到好处地使用protected
- 【工作笔记】Spring mvc多文件上传
- JSP基本知识