php错误异常处理

                                                                                                                       php错误异常处理

一.错误处理

       在运行php脚本时,PHP解析器会尽可能的去报告他所遇到的问题。在php中,错误报告的处理行为都是通过php的配置文件php.ini有关的配置指令确定的
  在php中错误是分级别的,如下:
  E_ERROR 致命的运行时错误,一旦发生阻止脚本的运行
  E_WARNING 运行时警告(非致命的错误)
  E_PARSE 语法解析错误
  E_NOTICE 注意消息(可能有问题也可能没有问题)
  E_CORE_ERROR 类似EE_ERROR,但是不包括php核心造成的错误
  E_CORE_WARNING 类似E_WARNING,但是不包括php核心造成的错误
  E_COMPILE_ERROR 致命的编译错误
  E_COMPILE_WARNING 致命的编译警告
  E_USER_ERROR 用户导致的错误信息
  E_USER_WARNING 用户导致的警告
  E_USER_NOTICE 用户导致的注意消息
  E_ALL 所有的错误所有的警告
  E_STRICT 有关php版本移植的兼容行性和操作性建议。

      1.设置是否出错时,输出错误信息
        设置php.ini中的diplay_errors:On  输出错误信息; display_errors:Off 不输出错误信息。 一般而言,php.ini文                   件中初始化设置是输出错误。当然我们还可以在单个脚本文件中允许是否输出错误信息,通过函数ini_set(),                 ini_set('display_errors',1)表示输出错误信息;ini_set('display_errors',0)表示不允许输出错误信息。
  
        还可细致的设置那些级别的错误可以输出错误信息。通过设置php.ini文件的中error_reporting ,设置时可以使用                 & | ~ 与或非符号。 如:error_reporting=E_ALL&~E_NOTICE 表示允许抛出任何除注意以外的错误信息。其                   他的以此类推。当然也可以在单个脚本中通过函数error_reporting()动态设置,如:error_reporting() 
所以与在
  error_reporting(E_ALL ^ E_NOTICE);表示允许抛出任何除注意以外的错误信息
  error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

      2.自定义错误处理
  自定义错误处理的方法是绕过标准php错误处理函数,调用自己定义的函数。通常使用set_error_handle()函数设            置用户自定义的错误处理函数,该函数用于创建程序运行时,使用自己的错误处理方法,失败返回null 。该函数              有两个参数。第一个为必选,为一个回调函数,即用户自定义的错误处理函数
  这个函数必须包括四个参数:错误,错误信息,错误文件,错误行号。第二个参数为可选,规定那个级别的错                误,会显示用户定义的错误,默认为E_ALL。所以我们首先需要自定义一个函数,标准格式如下:

function error_handle($error_level,$error_message,$file,$line)
{
		   $EXIT=false;
		   switch($error_level)
		   {
		     case E_NOTICE:
		          $error_type='notice';
			  $EXIT=TRUE;break;
		     default :
			  $error_type="unkonw";
		   }
		   if($error_type==='notice')
		   {
		      print('notice 而已嘛,小意思啦!问题'.$error_message.'发生在'.$file.'文件中的第'.$line.'行');
		      if($EXIT)die();
		   }
		   else
		   {
			   echo '没有问题<br />';
		   }
}
       set_error_handler('error_handle');
       echo $t;
       echo"继续运行!";

       3.写错误日志
    一旦我们的作品投入使用,就必须得关闭错误信息输出。但是任何产品都会存在意想不到的错误,特别是在交付后的运行中
  所以我么需要将一些错误信息写在日志中,便于后期程序员的查看。
  使用自己指定的文件记录错误日志,就一定要确保这个文件存放在文档的根目录之外,以防攻击。
  指定文件为错误记录的日志,需要配置php.ini文件:
  error_reporting=E_ALL     ;报告所有的错误类型
  diaplay_errors=Off       ;不输出错误信息
  log_errors=On             ;决定日志语句记录的位置
  log_errors_max_len=1024  ;每个日志项的长度
  error_log='文件路径'     ;日志文件的路径
  如果我们使用了自定义错误处理函数,要是没有将错误信息写入日志中,那么php系统是不会自动将错误写入日              志中的。如果需要,处理函数中还需要自己将错误写入日志中。
  还可以通过error_log()发送一个用户自定义的错误信息。
  bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
    

二.异常处理
      通java和c++语言一样是通过try catch语句来捕获异常和处理
 注意一个try至少有一个关联的catch,也就是说try可以关联多个catch
 在php中Exception是所有异常类的基类,通过php中的异常类我们也可以通过继承的方式,定义我们自己的异常类。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值