Вы можете поймать исключение, но вы, вероятно, пытаетесь поймать его не в том месте. Проблема с попыткой поймать этот низкий уровень исключения состоит в том, что оно может быть создано из разных источников.
Например, если вы используете драйвер базы данных для своих сеансов, то исключение будет вызвано из-за создания экземпляра драйвера базы данных в библиотеке сеансов (который создается в вызове сеанса, который, вероятно, произойдет до того, как вы создадите экземпляр какой-либо модели).
Перехват этого исключения может произойти из модели, но более вероятно, что это произойдет из другого источника - в этом случае вам, вероятно, придется расширить несколько библиотек или убедиться, что вы переносите базу вызов модели parent::__construct
и библиотека сеанса в блоке try-catch.
(я бы лично расширил библиотеку Model, чтобы сделать это вместо того, чтобы поместить ее в базовую модель)
Надеюсь, это поможет.