【发布时间】:2023-02-10 02:25:06
【问题描述】:
我真的很困惑处理类链接异常的正确方法是什么。
例如,
我有一个工厂类,
游戏工厂
<?php
namespace App\GameFactory;
class GameFactory
{
public static function generateGame($game)
{
if (!GameEnum::tryFrom($game)) {
throw new InvalidGameException(.....);
}
return new SuperMario();
}
}
我有一个服务类,然后将由控制器类调用。
游戏服务
<?php
namespace App\Service;
class GameService
{
public function runGame()
{
$factory = GameFactory::generateGame($this->game);
// do logic...
}
}
游戏控制器
<?php
namespace App\Controller;
class GameController
{
public function run($game)
{
$service = new GameService($game);
$service->runGame();
}
}
我的问题是,我是否需要在 GameService 中捕获它,然后在 GameController 中捕获它?
还是在Initiator-Class(GameController) 中捕获它就足够了?
【问题讨论】:
-
通常,您会为您的应用程序设置一些自定义错误/异常处理程序。如果某处抛出异常导致应用程序无法正常工作/中断流程,则不要在代码中捕获它,而将其留给应用程序自定义异常处理程序。如果异常没有破坏任何东西(你可以继续执行),那么你应该在你想要继续的级别/范围内捕获它。
-
异常处理与类关系不大。您可以在任何能够最好地处理错误的函数中捕获错误,这取决于应用程序设计。