• 微信号
目录

php基础

您当前的位置:首页 > 我的笔记 > php基础>php常见的错误类型

php常见的错误类型

常见的错误类型

在php中,错误用于指出语法、环境或编程问题。更具错误出现的在编程过程中的不同环节,大致可分为四类,具体如下

1.语法错误

语法错误是指编程代码不符合php的编程规范。语法错误最常见,也最容易修复,如,遗漏一个封号,就会显示错误信息。这类错误会阻止php脚本执行,通常发生在程序开发时,可以通过错误报告进行修复,在重现运行检查

2.运行错误

运行错误一般不会阻止php脚本执行,但是会阻止脚本做希望它做的任何事情,如,在调用header()函数钱如果没有字符输出,php通常会显示一条错误纤细,虽然php脚本继续执行,但header()函数并没有执行成功

3.逻辑错误

逻辑错误最让人头鞥的,不但不会阻止php脚本执行,也不会显示错误信息,如,在if语句中判断两个变量是否相等,如果错吧比较运行付“==”写成赋值运算符“=”就是一种逻辑错误,很难发现。

4.环境错误

环境错误是由于php理发环境配置问题引起的代码报错,如用php画一个五角星图行,但php扩展中没有加载CD库,这样php脚本执行时的报错就会是环境错误。

针对上述四种错误类型,在php中一般有两种方法处理,分别是标准php错误报告和异常处理

标准php错误报告能够处理所有类型的错误,但通常情况下,它适用于php5之前的版本。错误消失会进行全局报告,每个错误与一个代表错误严重性或类型的错误级别相关联。传统上运行错误和黄金错误都可以通过函数的返回值或适用die()、trigger_error()函数生成全局警告或致命错误来处理

在php5中,异常处理被用于表示发生一个异常事件并终端执行的脚本,如,环境错误或逻辑编程错误,异常是面向对象编程的主要错误处理机制

错误级别

php中的错误不仅有多种类型,并且每个错误都有一个错误级别与之关联,用于表示当前错误的等级,如,error、warning、notice等错误。php采用常量的形式来表示错误级别,每个错误级别都是一个整型。常见的错误级别如下

级别常量 描述
E_ERROR 1 致命的运行时错误,这类错误不可恢复,导致脚本停止运行
E_WARNING 2 运行是警告,仅给出提示信息,但脚本不会终止运行
E_PARSE 4 编译是语法解析错误,解析错误仅仅由于分析器产生
E_NOTICE 8 运行时通知,表示脚本遇到可能会变现为错误的情况
E_CORE_ERROR 16 类似E_ERROR,是由于php引擎核心产生的
E_CORE_WARNING 32 类似E_WARNING,是由php引擎核心产生的
E_COMPILE_ERROR 64 类似E_ERROR,是由Zend脚本引擎产生的
E_COMPILE_EWARNING 128 类似E_WARNING,是由Zend脚本心产生的
E_USER_ERROR 256 类似E_ERROR,是由用户自己在代码中使用trigger_error()来产生的
E_USER_WARNING 512 由用户自己在代码中使用trigger_error()来产生的
E_USER_NOTICE 1024 类似E_NOTICE,是由用户自己在代码中使用trigger_error()来产生的
E_STRICT 2048 启用php对代码修改建议,确保代码具有互操心和向前兼容性
E_ALL 30719 E_STRICT除外的所有错误和警告信息

手动触发错误

E_ERROR、E_NOTICE、E_WARNING、E_ALL等错误都是用php解释器自己触发的,实际上,除了php解释器自动触发的错误外,还可以根据不同的需求自定义错误,它可以用于协助调试、在发布给其他人的代码中生成不推荐使用的通知

在程序开发中,可以使用php内置函数trigger_error()函数来触发错误,该函数声明如下

bool trigger_error(string $error_msg[,int $error_type=E_USER_NOTICE])

在上述声明中,第一个参数是错误信息内容,第二个参数是错误类别,默认为E_USER_NOTICE

案例

<?php
    ini_set('display_errors',1);//让错误显示
    $a=10;
    if($a<20){
        trigger_error("不能小于20");
    }
?>

运行结果

陵小宇博客-PHP错误类型

需要注意的是,在使用trigger_error()函数触发错误之前,一定要先使用ini_ste()函数让错误显示,否则使用trigger_error()函数无法触发错误