早上好,
比方说,我们有一个定义异常的域,例如ObjectNotFoundException,它需要在域模型中定义的标识符 (VO)。
问题
我们可以直接从请求处理程序中抛出域异常吗,例如:
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响应。
最后,请注意这里的请求处理程序是一个实现细节,而不是问题的一部分。请不要对此发表评论。
谢谢你。