php7当中异常和错误的捕获

本文介绍了一种使用PHP实现的电路断路器模式,该模式通过与Redis的交互来处理异常和错误,实现服务的降级和恢复。文章详细展示了如何创建一个电路断路器类,并在发生异常时调用回退函数。
<?php
require("./../core/functions.php");

class CircuitBreaker{
    private $zSetKey="circuit";

    public function invoke(object $class,string $method,array $params,callable $fallback){
        global $redis;
        //得使用try catch  易于捕获A重要函数里面发生的异常信息
        try{
        //这里没啥 就是直接掉核心的函数 执行正常的逻辑 也就用了个解包
           return $class->$method(...$params);
        }
        catch (Throwable $ex){
        //Throwable 是 PHP 7 中可以用作任何对象抛出声明的基本接口,包括 Expection (异常)和 Error (错误)。可以捕获致命的错误信息 https://www.jianshu.com/p/dbca816a9af5
            $member=get_class($class)."_".$method;
            $redis->client()->zIncrBy($this->zSetKey,1,$member);
            return $fallback();//函数降级
        }
    }
}

function cbHandler(Exception $ex){
  throw new Exception($ex->getMessage());
}

//将错误信息  包含致命错误信息 调用cbHandler回调函数 在回调函数当中将错误信息写到异常里面去  那么上边的try catch 当中就可以获取到异常
set_error_handler("cbHandler",E_ALL);
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值