У вас есть два вида исключений.
Те, которые являются специфическими для вашего приложения, где хорошо избегать любых существующих исключений.
Ваши исключения для конкретного приложения должны упростить сценарии использования для людей, которые используют ваши библиотеки. 3 из ваших исключений конкретного приложения - это то, что могут делать пользователи. Четвертый (значок не существует) явно не процедурный, а гораздо более серьезный.
Похоже, у вас есть две специфичные для приложения ошибки: пользовательские ошибки и административные ошибки.
Другие являются частью какой-то другой технологии; то есть ошибки базы данных. Вы можете - вообще - игнорировать это. Если БД недоступна, API выдаст ошибки, и вы можете позволить им всплыть в вашей библиотеке.
Вы также можете «обернуть» их как исключение для конкретного приложения, которое содержит исключение более низкого уровня. Это иногда полезно, если много низкоуровневых технологий. В вашем случае это просто база данных. Проигнорируйте это и позвольте ошибкам БД пузыриться.