PHP中的错误分类以及屏蔽的要领

一,措施自己的错误

这种错误是较量容易就可以处理惩罚的错误,好比说语法错误可能是编译器无法理会,这些错误在编译的时候,就会不通过编译,然后可以按照错误的提示,找到详细的错误代码。但当利用eval()执行的代码产生错误时,在编译期间是发明不了,它只能比及代码在执行的进程中,对其编译发生错误

二,未界说标记

当PHP执行的时候,它大概碰着很多变量、函数等它不知道的名字,因为php在编译的时候,并没有完整的相识所有的标记名称、函数名等。

假如只是未界说的常量可能变量,这是只是一个通知的形式奉告。但假如是碰着未界说的函数可能类,措施将会终止运行。在关于找不到类的时候,假如用户界说了叫做__autoload的函数,它将在PHP碰着一个未界说的类时挪用,假如通过这个函数可以返回类,新加载的类将会被利用,不发生任何错误。

三,通用性错误

3.1 操纵系统所带来的差别

一些只在某非凡的平台可用的PHP函数。

一些在某非凡的平台不行用的PHP函数。

一些在差异的平台下有着细微不同的PHP函数。

区别文件名中的路径成份的字符。

外部措施可能处事并不是在所有平台中都可用。

3.2 PHP设置差别

好比设置选项magic_quotes_gpc,假如这个选项是开启的,PHP将增加斜线到所有的外部数据中。这时,假如将措施移植至另一台没有开启这个选项的处事器上上时,用户的输入就会有问题了。处理惩罚雷同差此外步伐是查抄PHP代码并通过ini_get()函数查察选项是否启用,然后作一个统一的调解。

register_globals : 该配置抉择PHP是否引入GET,POST,cookie,情况变量可能处事器变量为全局变量。一般制止利用。

allow_url_fopen: 假如这个选项配置为false,对URL文件操纵的成果是封锁的。

3.3 SAPI差别

四,运行错误 

如对硬盘数据可能网络操纵以及数据库挪用时,由于PHP自己以外的因素所造成的错误。

五,PHP错误 

PHP中的错误机制是被所有的PHP内置函数利用的,凡是这个简朴的机制打印出一个错误信息,包罗一些错误相关的根基信息。

错误级别分为:

E_ERROR:严重错误。

E_WARNING:最普通的错误范例。

E_PARSE:理会错误在编译的时候产生。

E_STRICT:这个错误级别是独一不包括在E_ALL常量中的,为了让PHP4到PHP5的迁移越发容易。

E_NOTICE:暗示运行的代码大概在操纵一些未知的工作。

E_CORE_ERROR:由于扩展启动失败等导致的。

E_COMPILE_WARNING:编译的时候呈现的告诫,汇报用户一些不推荐利用的语法信息。

E_COMPILE_ERROR:编译错误。

E_USER_ERROR

E_USER_WARNING

可以用error_reporting(Integer)函数来配置哪些错误被陈诉。如所有的错误,暗示为E_ALL ,除了告示以外的所有错误,可以暗示为E_ALL & ~E_NOTICE.

display_errors(boolean):这个配置节制错误是否作为PHP输出的一部门显示出来。

log_errors(boolean),这个配置节制错误是否记录。日志的地点是通过error_log(String)配置抉择的。默认环境下,错误被记录到WEB处事器的错误日志中。

html_errors(boolean):配置节制是否在错误信息中回收HTML名目 。

六,界说错误处理惩罚器

可以挪用 set_error_handler(error_handle_function,error_types)指定错误处理惩罚器。

function customError($errno, $errstr, $errfile, $errline)

echo "<b>Custom error:</b> [$errno] $errstr<br />";

}

set_error_handler("customError"); // 默认为所有的错误,就是E_ALL.

七,屏蔽错误的要领

1、在有大概堕落的函数前加@,然后or die("") 

如: 

@mysql_connect(...) or die("Database Connect Error")

2、编辑php.ini ,查找"display_errors =" ,将“=”后头的值改为"off。

3、在php剧本前加error_reporting(0),屏蔽所有错误提示。

个中,error_reporting 设置错误信息回报的品级。

语法:

int error_reporting(int [level]);

返回值:整数

函数种类:PHP 系统成果

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9681.html