gpt4 book ai didi

php - 在不同命名空间之间转换异常

转载 作者:行者123 更新时间:2023-12-04 17:06:48 25 4
gpt4 key购买 nike

MyApp命名空间,我有以下内容:

$class='MyApp\Callbacks\\'.$class;
$this->callback[$callBackId]=new $class();

该对象位于 MyApp\Callbacks命名空间,可能会抛出 CallbackException ( \MyApp\Callbacks\CallbackException ) 异常。

我发现自己经常做以下事情:
try {
$this->callback[$callBackId]->someMethod();
}
catch(\MyApp\Callbacks\CallbackException $e) {
throw new MyAppExeption($e->getMessage(),$e->getCode());
}

如何将这些异常转换为 MyAppException没有单独捕捉它们。我认为可能的解决方案是:
  • 有这个对象直接扔\MyApp\MyAppExeption异常(exception)。这味道不对。
  • 注入(inject) \MyApp\MyAppExeption异常进入这个对象。对此也不确定。
  • 捕捉\MyApp\Callbacks\CallbackException在一个街区里我捕捉到的每个地方 MyAppExeption .不要这么认为。
  • 在它周围创建一些包装器。听起来这可能是最好的,但我不确定如何实现它。

  • 请指教。谢谢

    最佳答案

    我目前只需要公开几个方法,所以我对它们进行了硬编码。如果我以后想要更多,可能会包装在一个类中并使用 __invoke .

    class MyApp
    {
    private $callbacks;

    public function __construct($callbacks)
    {
    $this->callbacks=$callbacks;
    }

    public function someMethod($x,$y) {
    try {
    $this->someMethod($x,$y);
    }
    catch(\MyApp\Callbacks\CallbackException $e) {
    //Modify if desired
    throw new MyAppExeption($e->getMessage(),$e->getCode());
    }
    }
    }

    关于php - 在不同命名空间之间转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853024/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com