博主信息
博文 31
粉丝 0
评论 0
访问量 37256
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP中的sleep、wakeup及异常处理
emy
原创
1240人浏览过

一、sleep、wakeup有什么用?
php中的 __sleep() 方法常用于提交未提交的数据,或类似的清理操作,与__sleep() 相反,__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。两者都是魔术方法的一种。

<?php
    class Emy  {
        private $name;
        private $city;
        public function __construct($name,$city) {
            $this->name=$name;
            $this->city=$city;
        }
        // 序列化的时候自动调用      
        public function __sleep() {
            return array('name','city');
        }
        //反序列化的时候自动调用
        public function __wakeup() {
            $this->what='在学PHP';
        }
    }
  
    $emy=new Emy('扬扬','foshan');
    $str=serialize($emy);    //序列化
    $emy=unserialize($str);    //反序列化
    $res=print_r($emy,true);
    printf('<pre>%s</pre>',$res);

输出结果:

QQ截图20200512224450.jpg

二、php异常处理

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

1-适当的处理异常代码应该包括:

try:监测代码块
catch:捕获异常
throw:抛出异常
finally:无论有无异常都会执行,可以省略
Exception:异常类

2-语法结构:

try{
        //检测代码
    }catch(Exception $ex){
        //捕获异常
    }
    finally{
        //不论是否有异常,都要执行,finally可以省略
    }

3-实例说明:

<?php
class nameException extends Exception
    {
        public function errorMessage()
        {
            echo '你的账号或密码出错';
        }
    }
    // 验证不对时调用这个类
    class passException extends Exception
    {
        public function testMessage()
        {
            echo '验证错误';
        }
    }
    $user = 111 ;
    $password = 888;
    $serial  = 12;
    try{
        // 当账号出错时,抛出一个异常
        if($user != 11 || $password != 88):
            throw new nameException();
        // 当验证码出错时,抛出一个异常
        elseif ($serial != 102):
            throw new passException();
        // 当它们都出错时,调用顶级异常类
        else:
            throw new Exception('当前用户不存在!');
        endif;
    }
    // 通常一个`throw`必须至少对一个`catch`
    catch(nameException $a)
    {
        echo $a->errorMessage();
    }
    catch(passException $a)
    {
        echo $a->testMessage();
    }
    catch(Exception $a)
    {
        echo $a->getMessage();
    }

输出结果:
QQ截图20200512232546.jpg

三、总结:学习了什么场景用这个异常处理。看案例知道了一个大概。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:总结比代码写得好
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学