在php中,错误用于指出语法、环境或编程问题。更具错误出现的在编程过程中的不同环节,大致可分为四类,具体如下
语法错误是指编程代码不符合php的编程规范。语法错误最常见,也最容易修复,如,遗漏一个封号,就会显示错误信息。这类错误会阻止php脚本执行,通常发生在程序开发时,可以通过错误报告进行修复,在重现运行检查
运行错误一般不会阻止php脚本执行,但是会阻止脚本做希望它做的任何事情,如,在调用header()函数钱如果没有字符输出,php通常会显示一条错误纤细,虽然php脚本继续执行,但header()函数并没有执行成功
逻辑错误最让人头鞥的,不但不会阻止php脚本执行,也不会显示错误信息,如,在if语句中判断两个变量是否相等,如果错吧比较运行付“==”写成赋值运算符“=”就是一种逻辑错误,很难发现。
环境错误是由于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");
}
?>
运行结果
需要注意的是,在使用trigger_error()函数触发错误之前,一定要先使用ini_ste()函数让错误显示,否则使用trigger_error()函数无法触发错误
*声明:内容来源于网络收集和整理,版权归原著所有,如来源信息有误或侵犯权益,请联系站长作修改和删除处理。