PHP基础知识之include和require的区别以及错误等级

载入语句的区别

  • include和require的区别

      include 载入失败时(没有找到该文件),报一个“提示错误”,然后继续执行后续代码;
      require载入文件失败是,报错并立即终止执行
      通常,require用于在程序中,后续的代码依赖于载入的文件的时候
    
  • include_once和include_once的区别

      include_once 载入失败时(没有找到该文件),报一个“提示错误”,然后继续执行后续代码;
      require_once载入文件失败是,报错并立即终止执行
    
  • include和include_once的区别

      include载入的文件不判断是否重复,只要有include语句,就会载入一次(会造成重复导入)
      include_once载入的文件会有内部判断机制是否“前面代码”已经载入过,如果载入,就不再载入
    
  • require和require_once的区别

      同include和include_once的区别
    

错误处理

错误的分类

  • 语法错误

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

      就在程序语法检查通过后,开始运行程序并在此过程中遇到的错误。常见的有3种:
      1、提示性错误
      2、警告性错误
      3、致命性错误
    
  • 逻辑错误

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

错误等级

  • PHP中系统常见错误

      E_ERROR:致命性错误
      E_WARNING:警告性错误
      E_NOTICE:提示性错误
      用户可以自定义的错误:
      E_USER_ERROR:自定义致命错误
      E_USER_WARNING:自定义警告性错误
      E_USER_NOTICE:自定义提示性错误
      其他:
      E_STRICT:严谨性语法检查错误
      E_ALL:所有错误
    

PHP手册参考
错误等级参考

错误的触发

  • 系统触发

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

     系统触发的典型错误有3种:
     1、E_NOTICE:提示性错误,会输出错误提示,并继续执行后续代码;
     2、E_WARNING:警告性错误,会输出错误提示,并继续执行后续代码(也可能看具体情况,比如require)
     比如include载入一个不存在的文件。
    
     3、E_ERROR:致命错误:导致程序无法执行后续语句:比如调用一个不存在的函数
    
  • 自定义触发

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

    语法形式:

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

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

是否显示错误报告(display_errors):

总共有两种做法:

1、在php.ini文件中,设定display_errors的值,on(显示)、off(不显示)。

注:作为开发阶段,我们都应该显示错误信息

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

	ini_set('display_errors',0);//不显示错误报告,1为显示

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

1、在php.ini文件中,设置error_reporting=E_ALL | E_STRICT (表示目前代表“所有错误”都显示)

2、在当前的脚本代码中:

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),	//这才代表显示所有错误!

错误日志的记录

错误日志其实就是错误报告,只是它会“写入文件中”,此时就成为错误日志!

  • 是否记录log_errors:

      两种实现方式
      1、php.ini中:
      log_errors=On 或者Off
      2、脚本中:
      ini_set("log_errors",1);//0:不显示,1:显示
      
      注:
      ini_set("php设置项",值);//用于脚本中设置php.ini中某项的值
      ini_get("php设置项");//用于获取php.ini中的某项的值
    
  • 设置error_log的路径

      两种实现方式:
      1、ini_set("error_log","error.txt");//记录到该文件
      2、使用一个特殊的名字“syslog”,则此时所有错误信息都会记录到系统的“日志文件”中。ini_set("error_log","syslog");//记录到系统日中
    

自定义错误处理器

自定义错误处理,就是指:让系统不要处理错误了,而是完全由开发者来对错误进行处理:显示和记录。

	具体实现:
	1、设定要处理错误的函数名
		set_error_handler("error_handler");
	2、定义函数
	function error_handler(){
		//具体实现
	}

自定义错误处理

posted @ 2016-08-21 01:26  onefiter  阅读(1420)  评论(0编辑  收藏  举报