zoukankan      html  css  js  c++  java
  • 自定义的异常类

    /*
    
     * 1.自定义的异常类,必须是系统类Exception的子类
    
     * 如果继承Exception类,重写了构造方法,一定要调用一下父类的构造方法。
    
     */
    
     class MyException extends Exception{//必须继承Exception类
    
        function __construct($mess){
    
            parent::__construct($mess);
    
        }
    
         function change(){//自定义方法
    
             echo '换上备胎';
    
         }
    
          
    
     }
    
    echo "早上起床<br/>";
    
        $flag = true;//根据异常情况设置标志位来抛出异常
    
         
    
    try{
    
        echo "开车上班<br/>";
    
        if($flag){
    
        //抛出异常
    
        throw new MyException("车子爆胎");
    
        }
    
        echo "路况很好<br/>";
    
    }catch(MyException $e){//$e = new Exception();
    
        echo $e->getMessage()."<br/>";
    
        echo $e->change()."<br/>";//调用自定义类的方法
    
        echo "换上备胎,继续开车上班<br/>";
    
    }
    
     
    
    echo "到公司<br/>";
    
    ============================================================================
    
    /*
    
     * 捕获多个异常catch
    
     */
    
     
    
     class WcException extends Exception{
    
         function methodWc(){
    
             echo "去公厕";
    
         }
    
     }
    
      
    
     class NoeatException extends Exception{
    
         function  methodEat(){
    
             echo "买个面包";
    
         }     
    
     }
    
     
    
     class NutException extends Exception{
    
         function  methodGowork(){
    
             echo "换个轮胎";
    
         }
    
     }
    
     class SnowException extends Exception{
    
         function  methodHighway(){
    
             echo "走小路";
    
         }
    
     }
    
     class Badday{
    
         function gowc($flag){
    
             if(!$flag){
    
                 throw new WcException("马桶坏了");
    
             }
    
             echo "物质准备到位<br/>";
    
         }
    
         function eat($time){
    
             if(!$time){
    
                 throw new NoeatException("无早餐可吃");
    
             }
    
             echo "吃很饱<br/>";
    
         }
    
         function gowork($nut){
    
             if(!$nut){
    
                 throw new NutException("扎到钉子了");
    
             }
    
             echo "去上班啦!<br/>";
    
         }
    
         function highway($snow){
    
             if(!$snow){
    
                 throw new SnowException("下雪封路了");
    
             }
    
             echo "走高速<br/>";
    
         }
    
     }
    
    echo "早上起床<br/>";
    
        $flag = false;//根据异常情况设置标志位来抛出异常
    
         
    
    try{
    
        $badday = new Badday();
    
        //1.上厕所(马桶不好用了) 去公厕
    
        $badday->gowc(true);
    
        //2.吃早餐(没有早点了) 买个面包
    
        $badday->eat(false);
    
        //3.开车上班(爆胎)  换胎
    
        $badday->gowork(true);
    
        //4.上高速(下雪了) 走国道
    
        $badday->highway(true);
    
    }catch(WcException $e){
    
        echo $e->methodWc();
    
    }catch (NoeatException $e){
    
        echo $e->methodEat();
    
    }catch(NutException $e){
    
        echo $e->methodGowork();
    
    }catch(SnowException $e){
    
        echo $e->methodHighway();
    
    }catch (Exception $e){
    
        echo $e->getMessage();
    
    }
    
     
    
    echo "到公司<br/>";
  • 相关阅读:
    实战篇之实现 OutLook 中以 EDM 形式发送通知邮件
    ASP.NET MVC5 之路由器
    ASP.NET MVC5 之数据迁移
    说不出的烦
    ASP.NET MVC5 之 Log4Net 的学习和使用
    读取配置文件参数和文件路径
    序列化和反序列化示例
    面向对象之封装
    面向对象4之常用的乱七八糟
    面向对象三之继承和派生
  • 原文地址:https://www.cnblogs.com/niuben/p/10855310.html
Copyright © 2011-2022 走看看