Я использую сериализатор JMS и имею два поля: вход и выход в виде даты и времени с определенным форматом, например:
/**
* @var \DateTime
* @Type("DateTime<'Y-m-d'>")
* @Assert\Date()
*/
protected $checkin;
/**
* @var \DateTime
* @Type("DateTime<'Y-m-d'>")
* @Assert\Date()
*/
protected $checkout;
Теперь я хочу выдать код состояния HTTP 400, если, например, кто-то отправляет недопустимый формат (например, пустую строку).
Проблема в том, что JMS Serializer выдает RuntimeException
, когда не может создать дату и время из формата в DateHandler, например:
if (false === $datetime) {
throw new RuntimeException(sprintf('Invalid datetime "%s", expected format %s.', $data, $format));
}
Это исключение дает код состояния HTTP 500.
Также проверил возможность добавить код исключения 400 в конфигурацию для этого экземпляра, но проблема в том, что JMS выдает этот тип исключения в широком диапазоне различных ситуаций.
Заранее спасибо!