Это зависит от вашего приложения, лично я предпочитаю, чтобы слой базы данных был максимально прозрачным.Это означает, что сам уровень базы данных будет отвечать за обработку ошибок, откат и т. Д.
Нет ничего плохого и в распространении исключений.Если ваш контроллер нуждается в , чтобы знать, что что-то пошло не так, вы должны сообщить об ошибке.Однако я нахожу это немного более редким.