博客列表 >PHP中的sleep、wakeup及异常处理

PHP中的sleep、wakeup及异常处理

emy
emy原创
2020年05月12日 23:28:31814浏览

一、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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议