• PHP错误处理


    php三种处理方式

    • 简单的die()语句
    • 自定义错误和错误触发器
    • 错误报告

    基本的错误处理:使用die()函数

    第一个实例简单的打开一个文本文件的简单脚本

    <?php
    $file=fopen("welcome.txt","r");
    ?>
    

    如果文件不存在,执行输出这个错误:

    Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
    No such file or directory in /www/runoob/test/test.php on line 2
    

    为了避免上面的错误信息,访问之前做一个检测

    <?php
    if(!file_exists("welcome.txt"))
    {
        die("文件不存在");
    }
    else
    {
        $file=fopen("welcome.txt","r");
    }
    ?>
    

    如果文件不存在,执行输出:文件不存在

    相比之前的好一些,但是这不是最好的

    自定义错误处理器

    创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。

    该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 和 error context):

    语法:

    error_function(error_level,error_message,
    error_file,error_line,error_context)
    参数描述
    error_level 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
    error_message 必需。为用户定义的错误规定错误消息。
    error_file 可选。规定错误发生的文件名。
    error_line 可选。规定错误发生的行号。
    error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

    错误报告级别

    这些错误报告级别是用户自定义的错误处理程序处理的不同类型的错误:

    常量描述
    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 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

    现在,让我们创建一个处理错误的函数:

    function customError($errno, $errstr)
    {
        echo "<b>Error:</b> [$errno] $errstr<br>";
        echo "脚本结束";
        die();
    }
    

    上面的代码是一个简单的错误处理函数。当它被触发时,它会取得错误级别和错误消息。然后它会输出错误级别和消息,并终止脚本。

    现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。

    设置错误处理程序

    PHP 的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

    可以修改错误处理程序,使其仅应用到某些错误,这样脚本就能以不同的方式来处理不同的错误。然而,在本例中,我们打算针对所有错误来使用我们自定义的错误处理程序:

    set_error_handler("customError");
    
  • 相关阅读:
    luogu P2439 [SDOI2005]阶梯教室设备利用
    bzoj1559: [JSOI2009]密码
    bzoj3172: [Tjoi2013]单词
    后缀树简短实现
    [APIO2010]特别行动队 --- 斜率优化DP
    [APIO2014]序列分割 --- 斜率优化DP
    [HNOI2012]集合选数 --- 状压DP
    UVA11107 Life Forms --- 后缀数组
    [TJOI2017]DNA --- 后缀数组
    [NOI2014]购票 --- 斜率优化 + 树形DP + 数据结构
  • 原文地址:https://www.cnblogs.com/shiyoushao/p/8184577.html
Copyright © 2020-2023  润新知