php错误处理

错误的分类

语法错误:程序没法运行,直接提示语法错误

运行时错误:只有程序运行到某行,或在某些特定的情形下运行时才会发生的错误(主要面对)

逻辑错误:程序从头到尾都没有发生(并提示)错误,但程序运行结果错误

 

错误分级

每个级别的错误,对应一个内部的名称—系统常量

系统错误:E_ERROR(严重错误,一发生,系统立即停止)、E_WARNING、E_NOTICE

E_ERROR=1(系统错误)

E_WARNING=2(系统警告)

E_PARSE=4(语法错误)

E_NOTICE=8(系统提示)

(系统内部的整数常量,这些常量是我们对该类错误进行控制的标识符)

用户自定义错误

只有3个:E_USER_ERROR、E_USER_ WARNING、E_USER_ NOTICE

可以在程序中,自己创建错误---是为了针对某些数据的不合理情形,而创建的错误(如年龄超过188等)

其他

E_ALL:代表所有错误

E_STRICT:代表严格性语法错误(当前php版本可执行但不欢迎使用)

 

错误的触发

正常触发:程序执行过程中体现出来

人工触发:程序员通过程序代码而产生的一个错误

    trigger_error(“错误描述信息”,用户错误代号);

显示错误报告

display_errors:控制是否显示

error_reporting:控制显示哪些级别的错误

控制的方式有两种:

Php.ini文件中:对系统中所有运行的php程序都有效

display_errors=On/Off

error_reporting= E_NOTICE (只显示notice这一级别错误提示)

error_reporting= E_NOTICE | E_WARNING(显示notice和warning一级别错误提示)

error_reporting= E_NOTICE & E_WARNING(什么都不显示)

error_reporting= E_ALL(显示所有,但不包含strict错误)

error_reporting= E_ALL | E_STRICT(显示所有错误,开发中最常用)

如果在显示所有错误的基础上,关闭个别错误,与状态设定(关闭)的原理一致,在显示所有错误的基础上将个别错误取反并做按位与运算

在网页代码中,只影响当前的网页代码(优先级别高)

ini_set(“控制项”,值);(几乎可以设定所有php.ini中的设定项  ini_get(“设定项名称”)用户获取某项的值)

示例: ini_set(“display_errors”,1);//1表示显示,0表示不显示

ini_set(“error_reporting”, E_NOTICE);(只显示notice这一级别错误提示)

记录错误日志(2种途径)

 log_errors:控制是否记录错误日志

error_log:控制错误日志记录到哪里,给定一个文件名就可以

一个特殊值:syslog,会记录到操作系统日志中,而不会记录到文件

Php.ini中:

  log_errors=On

error_log=“错误日志文件名”(没有给定路径,系统会在每个文件夹下建立文件并记录进去)

当前文件中使用ini_set(“log_errors”,On);

自定义错误处理器

就是自己控制错误的显示内容和记录内容

分两步完成:

1.设定自定义错误处理函数

set_error_handler(“函数名”);

2.定义该函数(并通常需要设定4个参数)

function error_handler($errNo,$errMsg,$errFile,$errLine){

 // 处理该4个参数

}

 

注意:该函数无需手工调用,出错时会自动调用;一旦用自定义错误,则系统不在出错误处理;如果系统发生严重错误,则不会调用自定函数,由系统处理(显示并终止)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章