おはようございます、
ドメイン モデルで定義された識別子 (VO) を期待するObjectNotFoundExceptionなどの例外を定義するドメインがあるとします。
質問
たとえば、リクエスト ハンドラからドメイン例外を直接スローできますか。
class ObjectRequestHandler implements RequestHandler
{
...
public function __invoke(Request $request, Response $response)
{
// Will self-validate and throw an exception if not a valid UUID
$objectId = ObjectId::fromString(strval($request->param('object_id'])));
$object = $this->repository->find((string)$objectId);
if (NULL === $object) {
// Exception defined at the domain level...
throw new ObjectNotFoundException($objectId);
}
...
}
}
これを行うと、リクエスト ハンドラーで識別子 VO が使用されることにもなります...スローされた例外は、デフォルトの例外ハンドラーによってキャッチされ、JSON応答を準備して送信することにも注意する必要があります。
最後に、ここでのリクエスト ハンドラは実装の詳細であり、質問の一部ではないことに注意してください。それについてコメントしないでください。
ありがとうございました。