• 自定义的异常类


    /*
    
     * 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/>";
  • 相关阅读:
    Maven安装与配置
    win10更新后程序路径盘符变成*星号解决方法
    谈谈 CSS 关键字 initial、inherit 和 unset
    用 async/await 来处理异步
    Vuex
    HTML5新特性之文件和二进制数据的操作 Blob对象
    vue中class和内联style绑定
    Petya and Staircases CF212div.2B
    CF#212 Two Semiknights Meet
    HDU1423最长上升公共子序列
  • 原文地址:https://www.cnblogs.com/niuben/p/10855310.html
Copyright © 2020-2023  润新知