文档章节

PHP异常转移

小洋哥
 小洋哥
发布于 2014/05/15 20:07
字数 568
阅读 13
收藏 0
/**
PHP之异常转移
分析:
 老师用电脑上课
   问题领域涉及三个对象
   学校 ,老师,电脑

***/
//电脑异常
class ComputerLanPiException  extends   Exception {
         
         Public   function  __Construct($msg) {
                       parent ::  __Construct($msg);
         }

}
//电脑异常
class ComputerMaoYanException  extends   Exception {
         
         Public   function  __Construct($msg) {
                      parent ::  __Construct($msg);
         }

}



/***学校问题主要管理学校的课程进度的问题异常**/
class   NoPlanException   extends  Exception {
         
        Public   function  __Construct($msg) {
                      parent ::  __Construct($msg);
         }
 
}

Class  Computer {
      private   $state = 2;  //电脑 状态

      Public  function  run() {  //如果是java的话那么 他会对run函数进行整体抛出  throw  xx ,xx
            
          if($this->state == 1) {          
               
                throw   new ComputerLanPiException('电脑蓝屏了');
          
          }

          if($this->state ==2) {

                throw   new  ComputerMaoYanException('电脑冒烟了');
          
          }

          echo  '电脑运行了...<br/>';
      }
         
         //重启电脑
      Public  function  reset() {
            echo  '电脑重启了<br/>';
            $this->state = 0 ;
      }

}

Class   Teacher {

     Private   $names;  //老师的名字
     Private   $comp;  //老师的电脑


     Public   function  __Construct($name,$comp) {
                   $this->names = $name;
                   $this->comp = $comp;
     }

     Public   function   Prelect () {
           try{
             
                      $this->comp->run();   //先运行电脑
                       echo $this->names.'讲课者';  //老师名字 

                     } catch (ComputerLanPiException  $e) {  //如果出现蓝屏的异常我们就直接重启
                
                        $this->comp->reset();   //重启
                        $this->Prelect() ;  //开始讲课对吧
                        echo  '<hr/>';
                        echo  $e->__toString(); //把对象转换为字符串 

                      } catch (ComputerMaoYanException  $e){  //电脑坏了怎么办法
                         
                           echo  '电脑冒烟了..<br/>';
                          $this->test();            

                           /****************异常转移*********************/
                          //echo  '<hr/>';    //异常转换
                          //throw  $e;   //继续向上抛出异常 这样抛不合理 因为 学习这块也没办法去解决这情况电脑换了的情况

                           //echo  $e->__toString(); //把对象转换为字符串 
                          //java中直接 throw  e;
                          //throw  new  ComputerMaoYanException('电脑冒烟了');  //继续抛出异常
                           $msg ='课程无法完成  原因:'.$e->__toString();  //把对象转换成字符串
                            //异常转换
                            throw  new   NoPlanException ($msg);  //抛出课程进度无法完成的异常//这叫异常转换
                        /****************异常转移*********************/
                   }
                  
     }

     Private  function   test() {
     
                 echo  '做大家练习';

     }



}



class  ExceptionsTest {
 
      /**自定义主函数*/
     Public   Static  function  Main(){
                    $comp = new Computer();
                    $t = new Teacher("任老师",$comp);  //初始化老师
                    try{
                          $t->Prelect(); //调用老师讲课        
                        
                     } catch(NoPlanException $e) {  //这叫异常转换
                         echo  '<hr/>';
                          echo  $e->getMessage();
                          echo  '<hr/>';
                          echo ' 学校马上换人了....';
                      
                      /***下面就是换人的****/
                     $comp = new Computer();
                     $comp->reset();
                     $t = new Teacher("王老师",$comp);  //初始化老师
                     $t->Prelect(); //调用老师讲课        
        
                    }
                
            
     }

}

header("Content-Type:text/html;charset=utf-8;");
ExceptionsTest :: Main();  //入口


© 著作权归作者所有

小洋哥
粉丝 23
博文 74
码字总数 39967
作品 0
成都
程序员
私信 提问
PHPWAMP强行脱离依赖,在系统缺失必备组件或DLL受损的情况下依然能正常运行

PHPWAMP无视VC运行库,无视系统DLL是否完整是否受损,无视系统原因造成的各种PHP环境运行障碍 为提升用户体验,我又抽空更新了PHPWAMP,目前已经实现强行脱离依赖,自定义全能匹配32和64位。...

Lccee老师
2017/08/22
0
0
Laravel异常: 如何捕获、处理和创建自己的异常

很多时候,web开发人员并不关心错误。 如果出现问题,你经常会看到默认的Laravel默认提示,例如 ,或者更糟糕的是,异常代码,这对访问者根本没有任何帮助。 所以我决定写一篇关于如何以优雅...

如来神掌
2018/05/11
922
0
并发十一:条件队列Condition实现分析

Condition Condition是J.U.C包中的一个接口,提供了三个主要方法await、signal和signalAll。和Object中的wait、notify、notifyAll三个监视器方法语义一致。 监视器方法必须放到synchronized修...

wangjie2016
2018/04/14
0
0
windows系统正常运行转移到linux系统时出现错误

在windows系统正常运行转移到linux系统时,便出现了一下错误。这种操作系统转移引起的错误,一般可以通过一下的方式解决: 到项目目录中把这个jar放到自己程序的lib包下,若不可以正常运行就...

子萧
2015/02/11
2K
0
JBPM4 流程转移(委派任务)

@晨曦之光 你好,想跟你请教个问题: jbpm4流程转移(实质是流程委派) 某一个业务流程,A通过流程转移给B后,在B的待审批界面已经看到该业务记录。但是B在点击同意,或拒绝的时候,抛异常了...

520920
2016/08/03
321
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
12
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
22
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
17
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
27
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部