• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php错误处理和php异常处理机制_php

php 搞代码 7年前 (2018-06-21) 154次浏览 已收录 0个评论
文章目录[隐藏]

php错误处理

当我们开发程序时,有时候程序出现了问题,我们就可以用以下几种办法找出错误。

开发阶段:开发时输出所有的错误报告,有利于我们进行程序调试
运行阶段:我们不要让程序输出任何一种错误报告(不能让用户看到(包括懂技术, 不懂技术的人))

将错误报告写入日志中

http://www.gaodaima.com/51117.htmlphp错误处理和php异常处理机制_php

一、指定错误报告 error_reporting = E_LL
二、关闭错误输出 display_errors = Off
三、开启错误日志功能 log_errors = On

1. 默认如果不指定错误日志位置,则默认写web服务器的日志中
2. 为error_log选项指定 一个文件名(可写)
3. 写入到操作系统日志中error_log=syslog

以下代码示例

";  ?>

当然php还提供了函数error_get_last()来获得错误信息

函数定义和用法

error_get_last()函数获取最后发生的错误。 该函数以数组的形式返回最后发生的错误。 返回的数组包含 4 个键和值: [type] – 错误类型 [message] – 错误消息 [file] – 发生错误所在的文件 [line] – 发生错误所在的

小例子:

输出: Array ( [type] => 8 [message] => Undefined variable: test [file] => D:/www/test.php [line] => 2 )

所以这样我们也很方便了。。。这样是不是对调试程序和排查错误的时候很有帮助呢?

这些错误报告级别是错误处理程序旨在处理的错误的不同的类型:

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE

Run-time 通知。

脚本发现可能有错误发生,但也可能在脚本正常运行时发生。

256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL

所有错误和警告,除级别 E_STRICT 以外。

(在 PHP 6.0,E_STRICT 是 E_ALL 的一部分)

php异常处理机制

定义:

异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程

语法格式:

try { //...} catch(Exception $e) { //...}

PHP中try{}catch{}是异常处理.

将要执行的代码放入TRY块中,如果这些代码执行过程中某一条语句发生异常,则程序直接跳转到CATCH块中,由$e收集错误信息和显示.

PHP中try{}catch{}语句

为了进一步处理异常,我们需要使用PHP中try{}catch{}—-包括Try语句和至少一个的catch语句。任何调用 可能抛出异常的方法的代码都应该使用try语句。Catch语句用来处理可能抛出的异常。

例子:

我写一段代码:

自己定义一个异常类
作用:就是写一个或多个方法解决当发生这个异常时的处理方式
1. 自己定义异常类,必须是Exception(内置类)的子类, 可以查看PHP手册里面Exception(内置类)的使用方法
2. Exception类中的只有构造方法和toString()可以重写, 其它都final

";     }     function open(){         touch("tmp.txt");          $file=fopen("tmp.txt", "r");          return $file;     } } ?>

1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行
2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续执行下去 直接跳转到catch中去执行, catch中执行完成, 再继续向下执行
注意: 提示发生了什么异常,这不是主要我们要做事,需要在catch中解决这个异常, 如果解决不了,则出去给用户在下面代码中,如果我没有这个TMP.TXT文件的话,就会抛出异常了。

如果有异常,我们调用OPEN方法就可以解决这个异常了。

getMessage()."
"; //getMessage() 是PHP里面内置的方法,可以直接调用 $file=$e->open(); }

下面将代码进行整理以及多个异常处理方法:

";  }  function open(){   touch("tmp.txt");    $file=fopen("tmp.txt", "r");    return $file;  } }   class DemoException extends Exception {  function pro(){   echo "处理demo发生的异常
"; } } class TestException extends Exception { function pro(){ echo "这里处理test发生的异常
"; } } class HelloException extends Exception { } class MyClass { function openfile(){ $file=@fopen("tmp.txt", "r"); if(!$file) throw new OpenFileException("文件打开失败"); } function demo($num=0){ if($num==1) throw new DemoException("演示出异常"); } function test($num=0){ if($num==1) throw new TestException("测试出错"); } function fun($num=0){ if($num==1) throw new HelloException("###########"); } } try{ echo "11111111111111
"; $my=new MyClass(); $my->openfile(); $my->demo(0); $my->test(0); $my->fun(1); echo "22222222222222222
"; }catch(OpenFileException $e){ //$e =new Exception(); echo $e->getMessage()."
"; $file=$e->open(); }catch(DemoException $e){ echo $e->getMessage()."
"; $e->pro(); }catch(TestException $e){ echo $e->getMessage()."
"; $e->pro(); }catch(Exception $e){ echo $e->getMessage()."
"; } var_dump($file); echo "444444444444444444444
";

欢迎大家阅读《php错误处理和php异常处理机制_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php错误处理和php异常处理机制_php

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址