zoukankan      html  css  js  c++  java
  • 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功能全面的单元测试框架

  • 相关阅读:
    mac下的一个类似“_kbhit()”实现
    mac使用备注
    open()打开文件失败对应的各种错误码
    xcode显示行号show gutter
    下载google code中源码的几个工具
    HTML5迷你游戏作验证码
    Linux+eclipse+gdb调试postgresql源码
    S-Nim
    【求助】从大表中删除小表中存在的记录问题
    Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树
  • 原文地址:https://www.cnblogs.com/Excellent/p/2255299.html
Copyright © 2011-2022 走看看