• 我们中的有些人,注定要在日常生活的点滴中去寻找生命的意义。---- 《生活大爆炸》|

错误和异常 (一):错误基础知识

错误和异常 (一):错误基础知识

思维导图:

1 什么叫错误

书面一点的解释:php脚本自身原因,大部分是由于错误的语法,或者服务器环境造成的php脚本无法通过编译,或者无法正常执行的情况。

注意:

1 并不是所有的错误都会造成脚本无法运行,部分错误发生后脚本继续运行

2 正常情况下,错误并不能被try catch捕捉

2 错误的级别

1 Parse error 解析错误 (脚本不能继续执行)

解析错误举例:

代码未以分号结尾
$num = 0 //运行结果:Parse error: syntax error, unexpected 'echo' (T_ECHO) 

2 Fatal error 致命错误 (脚本不能继续执行)

致命错误举例:

调用未定义的函数
test();  //运行结果:Fatal error: Uncaught Error: Call to undefined function test()

3 Warning 警告(给出错误信息,脚本继续运行)

警告举例:

除以0
1000 /0; 运行结果:Warning: Division by zero

4 Notice 注意 (给出错误信息,脚本继续运行)

注意错误举例:

输出未定义的变量
echo $a; //运行结果:Notice: Undefined variable: a

5 deprecated:最低级别的错误 (脚本继续运行)

在php7以下版本会出现

3 必知必会函数

1 error_report 设置错误的报告级别

在工作中我们经常会用到这个函数来设置php的错误报错,比如忽略notice报告:error_reporting(E_ALL ^ E_NOTICE);

可用版本:(PHP 4, PHP 5, PHP 7)
用法:error_reporting ([ int $level ] ) : int
level参数是错误的预定义常量

实例:

<?php
    // 关闭所有PHP错误报告
    error_reporting(0);

    // Report simple running errors
    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    // 报告 E_NOTICE也挺好 (报告未初始化的变量
    // 或者捕获变量名的错误拼写)
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    // 除了 E_NOTICE,报告其他所有错误
    error_reporting(E_ALL ^ E_NOTICE);

    // 报告所有 PHP 错误 (参见 changelog)
    error_reporting(E_ALL);

2 set_error_handler 设置用户自定义的错误处理函数

这个函数可以按照你自己定义的方式来处理错误,在后面的专题还会详细的讲解,这里先简单讲解一下

可用版本:(PHP 4 >= 4.0.1, PHP 5, PHP 7)
说明:set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) : mixed
参数解释:
$error_handler : 我们自己自定义的函数
$error_types:错误的预定义常量, error_types 里指定的错误类型都会绕过 PHP 标准错误处理程序, 除非回调函数返回了 FALSE

实例:

<?php
    set_error_handler('myErrorFun'); //把php原始的错误处理机制,变成我们的myErrorFun函数处理
    function myErrorFun($errno, $message, $file, $line)
    {
        echo '错误码是:'.$errno.'</br>';
        echo '错误的信息是'.$message.'</br>';
        echo '错误的文件是:'.$file.'</br>';
        echo '错误的行数是'.$line;
    }

    echo $a; //a是未定义的变量

    //打印结果:
    错误码是:8
    错误的信息是Undefined variable: a
    错误的文件是:D:\project\mz_php_server\public\test.php
    错误的行数是12

4 错误的相关配置

错误的配置也是我们需要掌握的重要内容

配置文件:php.ini文件

相关配置:

1 错误日志是否打开
log_errors = On (Off)
2 错误日志记录的位置
error_log = php_errors.log
3 是否打开错误显示
display_errors = Off (Off)
4 定义错误显示的级别
error_reporting = E_ALL (错误的预定义常量)

错误和异常(一):错误基础知识


本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:错误和异常 (一):错误基础知识
喜欢 (0)

您必须 登录 才能发表评论!