美文网首页
Easyswoole 自带Trigger异常处理 [适用于后台服

Easyswoole 自带Trigger异常处理 [适用于后台服

作者: 骑蚂蚁上高速_jun | 来源:发表于2020-05-02 20:17 被阅读0次

经本人实践总结 使用 Easyswoole 自带的异常 更适合处理后台进程任务的异常捕获。并不适合在http服务中做异常处理。。

1、创建 后台任务全局异常捕获类。

# 在 /App/Exception 目录下创建 HandleTrigger.php 

<?php

namespace App\Exception;

use EasySwoole\EasySwoole\Logger;
use EasySwoole\Trigger\Location;
use EasySwoole\Component\Singleton;
use EasySwoole\Trigger\TriggerInterface;

/**
 * 做后台任务全局异常捕获
 */
class HandleTrigger implements TriggerInterface
{
    use Singleton;
    public function error($msg, int $errorCode = E_USER_ERROR, Location $location = null)
    {
        Logger::getInstance()->error('Error:'.$msg);
        var_dump($location->getFile()); // 打印抛出异常的来源文件
        var_dump($location->getLine()); // 行数
        // TODO: Implement error() method.
    }

    public function throwable(\Throwable $throwable)
    {
        Logger::getInstance()->console('这是自定义输出的异常:'.$throwable->getMessage());
        // TODO: Implement throwable() method.
    }
}

2、注册全局异常处理类

在框架启动的 bootstrap.php 文件中 注册
// 注册后台进程自定义异常类
\EasySwoole\EasySwoole\Trigger::getInstance(new \App\Exception\HandleTrigger());

3 . 在后台运行脚本中触发异常
重点: 该种形式触发异常,脚本还会继续运行。 与传统的手工抛异常 throw new ... 组织脚本运行不同

// 触发 HandleTrigger 类的 error 方法
 \App\Exception\HandleTrigger::getInstance()->error("xxx" );
// 触发 HandleTrigger 类的 throwable 方法
\App\Exception\HandleTrigger::getInstance()->throwable(new \Exception("xxx"));

总结:
传统的 throw 抛出异常会阻止程序的运行。
easyswoole 可通过 Trigger 触发的异常,不会终止程序的运行。

相关文章

网友评论

      本文标题:Easyswoole 自带Trigger异常处理 [适用于后台服

      本文链接:https://www.haomeiwen.com/subject/ngvkghtx.html