php错误处理
   当我们开发程序时,有时候程序出现了问题,我们就可以用以下几种办法找出错误。
   开发阶段:开发时输出所有的错误报告,有利于我们进行程序调试
   运行阶段:我们不要让程序输出任何一种错误报告(不能让用户看到(包括懂技术, 不懂技术的人))
   将错误报告写入日志中
   一、指定错误报告 error_reporting = E_LL
   二、关闭错误输出 display_errors = Off
   三、开启错误日志功能 log_errors = On
   1. 默认如果不指定错误日志位置,则默认写WEB服务器的日志中
   2. 为error_log选项指定 一个文件名(可写)
   3. 写入到操作系统日志中error_log=syslog
   以下代码示例
   <?php
   // error_reporting(E_ALL);
   /// ini_set("display_errors", "off");
   // ini_set("error_log", "syslog");
   // ini_set("MAX_FILEUPLOAD", 200000000);
   // echo ini_get("upload_max_filesize");
   // error_log("this is a error message!!!!");
   getType($var); //注意
   getType(); //警告
   getTye(); //错误 会终止程序运行
   echo "###########################<br>";
   ?>
   当然php还提供了函数error_get_last()来获得错误信息
   函数定义和用法
   error_get_last()函数获取最后发生的错误。该函数以数组的形式返回最后发生的错误。返回的数组包含 4 个键和值: [type] - 错误类型 [message] - 错误消息 [file] - 发生错误所在的文件 [line] - 发生错误所在的
   小例子:
   <?php echo $test; print_r(error_get_last()); ?>输出:
   Array ( [type] => 8 [message] => Undefined variable: test [file] => D:\www\test.php [line] => 2 )
   所以这样我们也很方便了…这样是不是对调试程序和排查错误的时候很有帮助呢?
   这些错误报告级别是错误处理程序旨在处理的错误的不同的类型:
   值 常量 描述托福答案 www.yztrans.com
   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
   <?php
   class OpenFileException extends Exception { //继承PHP的内置类
   function __construct($message = null, $code = 0){
   parent::__construct($message, $code);
   echo "wwwwwwwwwwwwwww<br>";
   }
   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方法就可以解决这个异常了。
   <?php
   try{
   $file=fopen("tmp.txt", "r"); // 尝试读取这个文件
   if(!$file)
   throw new OpenFileException("文件打开失败"); //如果文件不存在则抛出异常
   }catch(OpenFileException $e){ //$e =new Exception();
   echo $e->getMessage()。"<BR>"; //getMessage() 是PHP里面内置的方法,可以直接调用
   $file=$e->open();
   }
   下面将代码进行整理以及多个异常处理方法:
   <?php
   /*
   * 异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程
   *
   * PHP5中的一个新的重要特性
   *
   * if(){
   *
   * }else{
   *
   * }
   *
   * try {
   *
   * }catch(异常对象){
   *
   * }
   *
   * 1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行
   * 2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续执行下去
   * 直接跳转到catch中去执行, catch中执行完成, 再继续向下执行 www.jx-jf.com
   *
   *
   * 注意: 提示发生了什么异常,这不是主要我们要做事,需要在catch中解决这个异常, 如果解决不了,则出去给用户
   *
   * 二、自己定义一个异常类
   *
   * 作用:就是写一个或多个方法解决当发生这个异常时的处理方式
   *
   * 1. 自己定义异常类,必须是Exception(内置类)的子类,
   * 2. Exception类中的只有构造方法和toString()可以重写, 其它都final
   *
   * 三、处理多个异常
   *
   *
   * 自己定义功能类时如果在方法中抛出异常
   *
   *
   */
   class OpenFileException extends Exception {
   function __construct($message = null, $code = 0){
   parent::__construct($message, $code);
   echo "wwwwwwwwwwwwwww<br>";
   }
   function open(){
   touch("tmp.txt");
   $file=fopen("tmp.txt", "r");
   return $file;
   }
   }
   class DemoException extends Exception {
   function pro(){
   echo "处理demo发生的异常<br>";
   }
   }
   class TestException extends Exception {
   function pro(){
   echo "这里处理test发生的异常<br>";
   }
   }
   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<br>";
 
   $my=new MyClass();
 
   $my->openfile();
 
   $my->demo(0);
 
   $my->test(0);
 
   $my->fun(1);
 
   echo "22222222222222222<BR>";
 
   }catch(OpenFileException $e){ //$e =new Exception();
 
   echo $e->getMessage()。"<BR>";
 
   $file=$e->open();
 
   }catch(DemoException $e){
 
   echo $e->getMessage()。"<BR>";
 
   $e->pro();
 
   }catch(TestException $e){
 
   echo $e->getMessage()。"<BR>";
 
   $e->pro();
 
   }catch(Exception $e){
 
   echo $e->getMessage()。"<BR>";
 
   }
 
   var_dump($file);
 
   echo "444444444444444444444<BR>";

php错误处理和php异常处理机制的更多相关文章

  1. C异常处理和C++异常处理的对比

    每一种编译器实现异常处理的方式会有所不同,但是都是基于Windows的SEH异常处理.这里以MSC编译器为例. C异常处理 #include <Windows.h> int main(in ...

  2. php自定义错误处理和try{}catch(){}学习

    <?php //语法错误 //运行时的错误 //逻辑错误 //php的错误报告级别 // display_errors; // ini_set("display_errors" ...

  3. ReactiveX 学习笔记(8)错误处理和 To 操作符

    Error Handling Operators Operators to Convert Observables 本文的主题为对 Observable 进行错误处理的操作符以及转换 Observab ...

  4. 异常处理和UDP Socket套接字

    一.异常处理 1.什么是异常处理: 程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表达出来,造成的影响就是整个程序无法再正常进行. 2.异常的结构: 1.异常 ...

  5. 【Go语言】错误与异常处理机制

    ①error接口 Go语言中的error类型实际上是抽象了Error()方法的error接口 type error interface { Error() string } Go语言使用该接口进行标准 ...

  6. ThinkPHP5.0源码学习之注册错误和异常处理机制

    在base.php文件中,用一句代码\think\Error::register();实现错误和异常处理机制的注册. // 注册错误和异常处理机制 \think\Error::register(); ...

  7. PHP 注册错误和异常处理机制

    注册错误和异常处理机制有三个PHP函数需要学习 1. register_shutdown_function('Bootstrap\Library\Frame::fatalError'); 2. set ...

  8. C++复习8.异常处理和RTTI

    C++异常处理和RTTI技术 20130930 1.异常处理的基本知识 C语言中是没有内置运行时错误处理机制,对于错误发生的时候使用的几种处理机制: 函数返回彼此协商后统一定义的状态编码来表示操作成功 ...

  9. Java异常处理机制 try-catch-finally 剖析

    Java拥有着强大的异常处理机制,最近初步学习了下,感觉内容还是挺多的,特此来将自己的理解写出来与大家分享. 一. 在Java代码code中,由于使用Myeclipse IDE,可以自动提醒用户哪里有 ...

随机推荐

  1. 【HDOJ】 七百题留念

  2. windows客户端连接到samba服务器(如何使用samba)

    首先确保你的服务端已经配置好samba并成功启动服务,方法可参考此文章http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.aspx ...

  3. java中的Package语句和import语句

    在实际项目中会有成百上千个类,我们把近似的类放在同一个包里面,比如把实体类放在实体类包里面   package 为解决类的 命名冲突问题而引入的机制. package语句作为Java源文件的第一条语句 ...

  4. Android 出现警告Exported service does not require permission

    在配置Android清单文件的时候,配置service,或者activity,或者receive的时候,出现Exported service does not require permission警告 ...

  5. 【iOS知识学习】_iOS沙盒机制

    IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序仅仅能在为该应用创建的目录内读取文件,不能够訪问其它地方的内容.全部的非代码文件都保存在这个地方.比方图片.声音.属性列表和文本文件 ...

  6. [转] GMT、UTC与24时区 等时间概念

    许多人都知道两地时间表简称为GMT或UTC,而世界时区表则通称为World Time,那么GMT与UTC的实质原意又是为何?世界时区又是怎么区分的?面盘上密密麻麻的英文单字代表着什么意义与作用呢?这些 ...

  7. poj 1328 贪心

    /* 贪心.... 处理处每个点按照最大距离在x轴上的映射 然后我们就有了一些线段 目的是选取尽量少的点 使得每个线段内都有点出现 我们按照左端点排序 然后逐一处理 假设第一个雷达安在第一个线段的右端 ...

  8. ASP.NET-FineUI开发实践-5

    1.tree的右键事件和单击事件 页面就不写了,准备一个树和一个菜单控件,随便写点啥 JS:注意注释 var menuSettings = F('menuSettings'); var tree = ...

  9. ASP.NET-FineUI开发实践-6(二)

    1.上回说到修改以前的会出现好几个5: 这是因为新增时是只新增到最后一行,所以点击选好了就跑到最后一行了,而且行号不会累积,只加到初始化的行号. 其实js里是有插入的,例子里可以插入到第一行,新增是a ...

  10. MaraDNS与DeadWood一起配置为本地机器提供小型化DNS服务

    因为工作测试需要,要在本机装一个环境,可以解析自己命名的域名,即域名->IP的映射服务.在网上找了下,都说是MaraDNS不错.也试了下,在本地配置是没有问题的.从官网上下载的是2-0-11.w ...