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>
  • 相关阅读:
    开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!
    表格存储TableStore2.0重磅发布,提供更强大数据管理能力
    配置管理 ACM 在高可用服务 AHAS 流控降级组件中的应用场景
    利用栈将中缀表达式转换为后缀表达式并进行计算
    利用栈将中缀表达式转换为后缀表达式并进行计算
    Matlab学习点滴
    Matlab学习点滴
    Matlab学习点滴
    栈的基本应用_将字符串逆序输出
    栈的基本应用_将字符串逆序输出
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14276531.html
Copyright © 2011-2022 走看看