>  기사  >  php教程  >  PHP Cookbook读书笔记 – 第20章错误处理、故障排除和测试

PHP Cookbook读书笔记 – 第20章错误处理、故障排除和测试

WBOY
WBOY원래의
2016-06-06 19:40:551175검색

创建自己的异常 处理 类 PHP5已经提供了功能完善的异常 处理 类,为什么还要自定义异常 处理 程序呢?因为默认的异常 处理 并没有真正对不可预知的结果实现妥善地 处理 。它只是输出与常规 错误 没有区别的 错误 信息。 标准 错误 处理 程序与异常 处理 之间

创建自己的异常处理

PHP Cookbook读书笔记 – 第20章错误处理、故障排除和测试PHP5已经提供了功能完善的异常处理类,为什么还要自定义异常处理程序呢?因为默认的异常处理并没有真正对不可预知的结果实现妥善地处理。它只是输出与常规错误没有区别的错误信息。

标准错误处理程序与异常处理之间的一个主要区别就在于异常可以包含当捕获到自定义异常时自动运行的清理例程。该例程能完美地执行清理工作,并优雅的退出。

输出栈轨迹

PHP5提供了2个用于调试错误的函数debug_backtrace()和debug_print_backtrace()

读取、设置配置变量

//读取配置变量
$include_path = ini_get('include_path');

//设置配置变量
ini_set('include_path',ini_get('include_path').':/home/fezzik/php');

对用户隐藏错误信息

在php.ini中设置

display_errors =off
log_errors     =on
error_log   = /var/log/php.error.log

也可以在php中通过ini_set函数来设置

ini_set('display_errors', 'off');
ini_set('log_errors', 'on');
ini_set('error_log', '/var/log/php.error.log');

错误报告

PHP中可以通过error_reporting设置显示错误的类别,在PHP5中引入了一个新的错误级别——E_STRICT用来提高能改进代码的方法,该方法是唯一不包含在E_ALL中的错误级别。因此要在开发过程中最大程度的涵盖各种错误类型,就需要将错误报告基本设置为E_ALL | E_STRICT

error_reporting(E_ALL);                // everything
error_reporting(E_ERROR | E_PARSE);    // only major problems
error_reporting(E_ALL & ~E_NOTICE);    // everything but notices

自定义错误处理

与异常处理不同,自定义错误处理可以用来处理所有PHP报告的错误,通过下列形式实现

set_error_handler('pc_error_handler');

function pc_error_handler($errno, $error, $file, $line) {
    $message = "[ERROR][$errno][$error][$file:$line]";
    error_log($message);
}

一些魔术常量经常用在错误处理

__FILE__,__LINE__,__FUNCTION__,__CLASS__,__METHOD__

单元测试

PHPUnit针对PHP4或PHP5版本

PHPUnit2仅针对PHP5版本

SimpleTest功能全面的单元测试框架

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.