В руководстве написано:
Если во время операции произошла одна или несколько ошибок, их текст можно получить из результата:
$result = BookTable::update(...);
if (!$result->isSuccess()) {
$errors = $result->getErrorMessages();
}
|
Создается обманчивое впечатление, что проверкой isSuccess можно отлавливать ошибки работы с БД. Однако это не так. Ошибки уровня БД обрабатываться не будут. Т.е. ошибки валидации, несоответствия полей в классах DataManager обработаются, а вот попытки записать NULL в поле NOT NULL или ошибки дубликата ключей вызовут просто Exception. В DataManager такой код:
try {
операции с БД
}
catch (\Exception $e)
{
// check result to avoid warning
$result->isSuccess();
throw $e;
}
return $result; |
не логичнее ли было все же вернуть $result и дать программисту возможность самому решить, разрулить ситуацию или вызвать throw?
Ну а так все равно придется оборачивать каждую операцию в свой дополнительный try catch