• 技术文章 >后端开发 >php教程

    五分钟带你看懂PHP中的异常处理是什么情况

    长期闲置长期闲置2021-10-20 18:39:59原创215
    在之前的文章中给大家带来了《一定搞得懂PHP中如何添加图片水印》,其中通过过示例给大家详细介绍了在PHP中应该如何添加水印,本篇文章我们继续来看一下PHP中错误处理的相关知识,希望能帮助到大家!

    PHP中的错误和异常处理在PHP中是非常常用的,在我们的日常开发中,肯定会遇到比如忘记加分号了、函数名写错或者函数被重新定义了等等很多的错误,如果说在开发过程中,能够发现错误显示错误,那肯定对我们的开发是十分有利的。

    因此,在开发项目的时候合理使用一场处理,会有助于我们发现错误改正错误以加快开发速度。那接下来我们就一起来看一看应该怎样去了解我们的错误处理。大家也可以通过免费的《php错误处理》教学视频来进行学习。

    PHP中的异常处理类

    在PHP中就提供了内置的异常处理类,也就是Exception,这个类包含了一些处理异常的函数,这些函数可以捕获程序异常和错误。

    那下面列举出该类中较为常用的函数:

    捕获程序中的异常

    程序中的异常出现一般不会自己显现出来,这时候我们可以通过try catch 语句和 throw 关键字,来达到捕捉程序中异常的目的。

    try catch语句和流程控制的语句类似,throw关键字可以抛出一个异常,我们可以通过类似条件选择的结构来完成捕获程序中的异常。try catch语句的语法格式如下:

    try{
        // 可能出现异常或错误的代码,比如文件操作、数据库操作等
    }catch(Exception $a){    // $a 为一个异常类的对象
        // 输出错误信息
    }

    在我们需要进行捕捉程序异常时,需要把需要捕捉的代码放入try代码块里面,在上述语法中,每一个try应该至少有一个与之对应的catch。当try代码块没有catch匹配的异常时,代码就会跳转到最后一个catch后面继续进行。

    在其中产生的异常都可以被throw语句跑出来并且被catch捕获,当有一个异常出现的时候,在其后面的代码就不会再继续执行了。

    示例如下:

    <?php
        try{
            $err = '抛出异常信息,并跳出 try 语句块';
            if(is_dir('./demo')){
                echo '这里是一些可能会发生异常的代码';
            }else{
                throw new Exception($err, 20211020);   // 抛出异常
            }
            echo '上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>';
        }catch(Exception $e){
            echo '捕获异常:'.$e->getMessage().'<br>错误代码:'.$e->getCode().'<br>';
        }
        echo '继续执行 try catch 语句之外的代码';
    ?>

    输出结果:

    1020.24.png

    再上述示例中,通过try语句试图判断当前目录下有没有名为demo的目录,目录不存在,所以执行了throw关键字抛出异常。异常发现抛出后,try语句的剩下语句就不会在运行了。

    创建自己的异常类

    PHP中可以事先定义一些异常,因为PHP中很少会主动的抛出异常,当事先定义好异常后,我们可以通过if-else来对可能出现的异常进行判断,手动来抛出异常,再PHP中经常能够使用到我们自己创建的异常类。

    示例如下:

    <?php
    class emailException extends Exception{
        function __toString(){
            return "<b>email is null</b>file:".$this->getFile().',line:'. $this->getLine();
        }
    }
    class nameException extends Exception{
    }
    ?>

    上述示例中,定义了两个异常类,都继承自 Exception 基类。

    在实际的业务中,我们也会根据不同的需求来抛出不同的异常,示例如下:

    function reg($reg) {
        if (empty($reg['email'])) {
            throw new emailException("emaill is null", 1);
        }
        if(empty($reg['name'])) {
            throw new nameException("name is null", 2);
         }
    }

    在执行业务代码时,可以使用if语句来判断异常会发生的地方,然后手动抛出异常,通过语句实现将不同的异常分发给不同的异常类处理;再下面这段示例中,根据不同的情况捕获不同的异常,当第一个catch捕获了异常,即使程序中依然存在其他异常,也会跳过其他的catch代码块。无论程序中有没有出现异常,最后的finally中的语句都会执行的。示例如下:

    try{
        $reg = array('phone'=>'1888888888');
        reg($reg);
    } catch(emailException $e) {
        echo $e;
    } catch(nameException $e) {
        echo 'error msg:' .$e->getMessage().'error code:'.$e->getCode();
    } finally {
        echo ' finally';
    }

    想要了解更多关于PHP的知识,可以点击《PHP视频教程》进行学习!

    以上就是五分钟带你看懂PHP中的异常处理是什么情况的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:PHP 异常处理
    上一篇:一定搞得懂PHP中如何添加图片水印 下一篇:带你一起了解PHP的错误类型和错误级别
    大前端线上培训班

    相关文章推荐

    • php怎么安装ldap扩展• php里面的echo是什么意思• 怎样通过PHP来绘制图形验证码?• PHP xcache无法加载怎么办• PHP中怎样完成图像的缩放和裁剪?(实例详解)• 一定搞得懂PHP中如何添加图片水印

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网