php基础-错误处理

错误的分类

通常分3种:

 

语法错误:

程序运行之前,都要先检查语法。如果语法有错误,就会立即报错,并且不会去执行程序。

 

运行时错误:

就是在程序语法检查通过后,,开始运行程序并在此过程中遇到的错误。常见的有3中:

提示性错误:

警告性错误:

致命错误:

 

逻辑错误:

指的是,程序本身可以正常执行,没有报错——但“计算结果”却错了。

 

错误的分级

php语言中,将各种错误进行了不同级别的分类归纳,并形成大约有10几个级别的错误,这就是技术层面的错误分级。

每一级别的错误,都有一个“代号”,这个代号其实也就是一个系统内部的“常量而已”。比如:

 

系统常见错误:

E_ERROR 致命错误

E_WARNING: 警告性错误

E_NOTICE: 提示性错误

用户可自定义的错误:

E_USER_ERROR 自定义致命错误

E_USER_WARNING: 自定义警告性错误

E_USER_NOTICE: 自定义提示性错误

其他:

E_STRICT: 严谨性语法检查错误

E_ALL 代表“所有错误”。


错误的触发

错误的触发,就是让错误“发生”。

 

有两种方式会触发错误:

 

系统触发

程序运行到某行代码,确实出现了某种错误,此时系统就会报错——这就是触发了系统错误。

系统触发的典型错误有这3种:

E_NOTICE: 提示性错误:会输出错误提示,并继续执行后续代码;

比如使用不存在的变量或常量:

E_WARNING: 警告性错误:会输出错误提示,并继续执行后续代码(也可能看具体情况,比如require)

比如include载入一个不存在的文件:

E_ERROR 致命错误:导致程序无法执行后续语句;

比如调用一个不存在的函数!

自定义触发:

当我们处理某些数据的时候,本来数据本身是没有错误的,但根据具体应用(业务)的需要,会要求数据满足某种条件,而该数据并不满足的时候,我们就可以在程序中“主动”去触发(创建)一个错误,以表明该数据的“非法性”。

语法形式:

trigger_error(错误提示信息内容,  3中用户错误代号之一);

其中触发了用户的致命错误(E_USER_ERROR,也会终止程序的后续执行。

错误报告的显示问题

所谓错误报告,就是显示在网页上的错误提示内容!

 

有关错误报告,有2个问题需要处理:

 

是否显示错误报告(display_errors)

2种做法可以来设定是否显示:

做法1

php.ini文件中,设定display_erros的值,为on(显示),或为off(不显示)

当然,作为开发阶段,我们都应该显示错误信息。

 

注意:前提条件都是我们apache已经装载了php.ini文件——这一点,需要在apache的配置文件httpd.config中加入如下一行:

PHPIniDir  php.ini文件的了位置(路径)

比如:

方法2

直接在php的脚本文件中设使用函数ini_set()来对其进行设置:

显示哪些级别的错误报告(error_reporting)

显然,前提是“display_errors”设置为On(1),表示可以显示。

 

显示哪些级别的错误报告,也有2个做法:

做法1:在php.ini文件中;

这个值目前代表“所有错误”,都显示。

修改为:

更多示例为:

error_reporting = E_NOTICE | E_WARING | E_ERROR //显示该3种;

error_reporting = E_ERROR | E_USER_ERROR //显示该2种严重错误

做法2:在当前的脚本代码中:

php.ini中设置其实是一样,举一些例子如下:

ini_set(“error_reporting”,  E_NOTICE); //就显示该一个级别的错误

ini_set(“error_reporting”,  E_NOTICE | E_WARNING), //显示2个级别

ini_set(“error_reporting”,  E_NOTICE | E_WARNING | E_ERROR), //显示3个级别

ini_set(“error_reporting”,  E_ALL | E_STRICT), //这才代表显示所有错误!

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值