zoukankan      html  css  js  c++  java
  • 错误处理

    集中成功优酷在代码块中发生的异常

    在代码块中发生了异常直接抛出,代码块中不处理异常,将异常集中起来一起处理

    使用的关键字

      try:检测代码块

      catch:捕获异常

      throw:抛出异常

      finally:无论有无异常都会执行,可以省略

      Exception:异常类

    在文档中Exception 类中有属性和方法

    语法结构

      

    <?php 
    
    //这里可以写php代码了
    
        try{
            //检测代码
        }catch(Exception $e){
            //捕获异常
        }
        finally{
            //不论是否有异常,都要执行,finally可以省略
        }
    
    ?>

    例题

      

    <?php         
            if(isset($_POST['btn'])){
                
                try {
                    $age=$_POST['age'];
                    if($age==''){
                        //抛出异常
                        throw new Exception("年龄不能为空",1001);
                    }
                    if(!is_numeric($age)){
                        throw new Exception("年龄必须是数字");
                    }
                    if(!($age >=10 && $age <=35)){
                        throw new Exception("年龄必须要在10-35之间",1002);
                        echo '您的年龄'.$age;
                    }
                    //捕获异常
                    } catch (Exception $e) {
                        echo "错误信息".$e->getMessage()."<br>";
                        echo "错误代码".$e->getCode().'<br>';
                        echo "错误行号".$e->getLine().'<br>';
                        echo "错误文件".$e->getFile().'<br>';
                }
        }
        
        ?>
    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
    
        <form action="" method="POST">
            年龄: <input type="text" name="age" id=""> <br/>
            <input type="submit" name="btn" value="提交">
        </form>
    </body>
    </html>

     注意:抛出异常以后,try块终止执行,执行权限交给了catch

    自定义异常

    场景:如果实现异常的分类处理?比如异常有三个级别异常对应三种处理方式

    自定义一场即可

    所有异常类的父类是Exception,Exception中的方法不允许重写

    <?php
        //自定义空异常类
        class MyNull extends Exception{
            //继承 异常类就行,异常类中的方法都是final  不能不重写
        }
    
        //自定义类型异常类
        class MyType extends Exception{
    
        }
    
        //自定义范围异常类
        class MyRange extends Exception{
    
        }
    
        //逻辑代码
    
    
        if(isset($_POST['btn'])){
            try {
                    $age=$_POST['age'];
                    $name=$_POST['name'];
                    if($name==''){
                        //抛出异常
                        throw new MyNull("姓名不能为空");
                    }
                    if($age==''){
                        //抛出异常
                        throw new MyNull("年龄不能为空");
                    }
    
                    if(!is_numeric($age)){
                        throw new MyType("年龄只能是数字");
                    }
    
                    if(!($age >10 && $age <35)){
                        throw new MyRange("年龄只能在10之35岁之间");
                    }
    
            } catch (MyType $e) {
                
                echo 'mytype 异常类 给你提示'.$e->getMessage();
    
            }catch (MyNull $e){
    
                echo 'mynull 异常类 给你提示'.$e->getMessage();
    
            }catch (MyRange $e ){
    
                echo 'myrange 异常类 给你提示'.$e->getMessage();
    
            }
    
    
        }
    
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <form action="" method="post">
            姓名:<input type="text" name="name" id=""> <br>
            年龄:<input type="text" name="age" id=""> <br>
            <input type="submit" value="提交" name="btn">
        
        </form>
    </body>
    </html>
    <?php
        //自定义空异常类
        class MyNull extends Exception{
            //继承 异常类就行,异常类中的方法都是final  不能不重写
        }

        //自定义类型异常类
        class MyType extends Exception{

        }

        //自定义范围异常类
        class MyRange extends Exception{

        }

        //逻辑代码


        if(isset($_POST['btn'])){
            try {
                    $age=$_POST['age'];
                    $name=$_POST['name'];
                    if($name==''){
                        //抛出异常
                        throw new MyNull("姓名不能为空");
                    }
                    if($age==''){
                        //抛出异常
                        throw new MyNull("年龄不能为空");
                    }

                    if(!is_numeric($age)){
                        throw new MyType("年龄只能是数字");
                    }

                    if(!($age >10 && $age <35)){
                        throw new MyRange("年龄只能在10之35岁之间");
                    }

            } catch (MyType $e) {
                
                echo 'mytype 异常类 给你提示'.$e->getMessage();

            }catch (MyNull $e){

                echo 'mynull 异常类 给你提示'.$e->getMessage();

            }catch (MyRange $e ){

                echo 'myrange 异常类 给你提示'.$e->getMessage();

            }


        }

    ?>

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <form action="" method="post">
            姓名:<input type="text" name="name" id=""> <br>
            年龄:<input type="text" name="age" id=""> <br>
            <input type="submit" value="提交" name="btn">
        
        </form>
    </body>
    </html>
  • 相关阅读:
    Beta 冲刺 (2/7)
    福大软工 · 第十次作业
    Beta 冲刺(1/7)
    BETA 版冲刺前准备
    福大软工 · 第十一次作业
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    2017-2018-1 20155321 《信息安全系统设计基础》第十四周学习总结
    2017-2018-1 20155321 《信息安全系统设计基础》实验五——实时系统
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14276531.html
Copyright © 2011-2022 走看看